工作中遇到一个问题,A表中字段(DateTime1)的数据类型为DateTime,新建了一张表B的SMALLDATETIME1字段的数据来自A表的DateTime1

但在将A表字段DateTime1导出到B表的SMALLDATETIME1字段时出现了以下错误
后经过排查发现在原来是A表DateTime1字段的值有许多是"1753-01-01 00:00:00.000",从而导致转换失败
虽然知道了是什么原因导致的,但还是不太明白为什么"1753-01-01"无法转换成SMALLDATETIME类型

通过以下两篇文章知道DateTime与smalldatetime的差别(smalldatetime仅Sqlserver2005以上版本支持,2005不支持)

DateTime时间范围"1753-01-01 00:00:00.000"到"9999-12-31 23:59:59.997"

smalldatetime时间范围"1900-01-01 00:00:00"到"2079-06-06 23:59:00"

datetime

Date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007 seconds, as shown in the table.

smalldatetime

Date and time data from January 1, 1900, through June 6, 2079, with accuracy to the minute. smalldatetime values with 29.998 seconds or lower are rounded down to the nearest minute; values with 29.999 seconds or higher are rounded up to the nearest minute.

Date and time types in SQL Server

--如果存储过程存在,则删除重建
IF EXISTS(select1from sys.objects where type='p' AND name='HTL_Convent_DateTime')
DROP PROCEDURE HTL_Convent_DateTime;
--必须加上Go,否则下面创建存储过程时会出现错误"MSSQL 'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。"
GO
--对输入的日期进行各种日期格式转换
--HLT
--'2014-07-30 15:12:17'
CREATE PROCEDURE HTL_Convent_DateTime
@date_time DATETIME
AS
BEGIN
SELECT @date_time AS 'DateTime',
CAST (@date_time AS DATETIME2) AS 'DateTime2'
, CAST (@date_time AS DATE) AS 'DATE'
, CAST (@date_time AS TIME) AS 'TIME'
, CAST (@date_time AS datetimeoffset) AS 'datetimeoffset'
SELECT CAST (@date_time AS SMALLDATETIME)AS 'SMALLDATETIME';
END
GO

1900-01-01之前的日期无法从DateTime转换成smalldatetime, smalldatetime时间范围"1900-01-01 00:00:00"到"2079-06-06 23:59:00"

2076-06-06以后的日期也无法转换
在smalldatetime时间范围内的日期
DECLARE @date DATETIME
SET @date='1753-01-01 00:00:00.000'
SELECT CAST (@date AS SMALLDATETIME);

Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”的更多相关文章

  1. 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。

    在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL ...

  2. 把excel的数据导入到SQLSERVER里面,excel的字符串时间在导入sql库显示datetime 数据类型的转换产生一个超出范围的值

    这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大 ...

  3. sql server报【从varchar数据类型到datetime数据类型的转换产生一个超出范围的值】错误的解决办法

    产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime ...

  4. Long类型时间如何转换成视频时长?

    数据库中存放的视频时长是一个Long类型的毫秒/秒时间,现在需要把这个时间转换成标准的视频时长格式,在我看来这应该是一个很常用的转化有一个很常用的转换方法工具才对,可是我百度找了许久,没有一个简单直观 ...

  5. 多页Excel转换成PDF时如何保存为单独文件

    通过ABBYY PDF Transformer+图文识别软件,使用PDF-XChange打印机将多页Excel工作簿转换成PDF文档(相关文章请参考ABBYY PDF Transformer+从MS ...

  6. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  7. SQL中DateTime转换成Varchar样式

    SQL中DateTime转换成Varchar样式语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect ...

  8. python2.7字典转换成json时中文字符串变成unicode的问题:

    参考:http://blog.csdn.net/u014431852/article/details/53058951 编码问题: python2.7字典转换成json时中文字符串变成unicode的 ...

  9. SQLServer数据库转换成MySQL数据库

    由于工作需要,系统原先的SQLServer数据库要转换成MYSQL数据库,所以这两天就一直在查阅这方面的资料.最开始,我尝试从SQLServer中导出SQL文件,然后导入到MYSQL数据库中,发现报错 ...

随机推荐

  1. python网页下载

    python 2.7版本下可以运行 import urllib2 def getHtml(url): response = None requset = None headers = {'User-A ...

  2. java 数组操作方法

    数组操作方法: 实现数组拷贝: 语法:System.arraycopy(源数组名称,源数组拷贝开始索引,目标数组名称,目标数组拷贝数组索引,长度) 数组A:1 . 2 . 3 . 4 . 5 . 6  ...

  3. [转]如何在 JS 代码中消灭 for 循环

    一,用好 filter,map,和其它 ES6 新增的高阶遍历函数 二,理解和熟练使用 reduce 三,用递归代替循环(可以break!) 四,使用高阶函数遍历数组时可能遇到的陷阱 五,死磕到底,T ...

  4. React Native升级方法——升级到最新版本0.59

    React Native最近有大动作,于2019年3月12日发布新版本0.59.主要有两点值得升级:支持React Hooks:升级了JavaScriptCore,使Android性能有大幅提升.据用 ...

  5. 注入AspectJ切面

    为什么要用AspectJ:AspectJ提供了Spring AOP很多不能实现的多种切点类型(比如属性,构造方法切入,由于不能实现构造方法的切入spring aop就不能实现对象创建过程的通知) As ...

  6. post登录趴一趴百度贴吧美女

    本次爬取的贴吧是百度的美女吧,给广大男同胞们一些激励 在爬取之前需要在浏览器先登录百度贴吧的帐号,各位也可以在代码中使用post提交或者加入cookie 爬行地址:http://tieba.baidu ...

  7. 【BZOJ 3561】 3561: DZY Loves Math VI (莫比乌斯,均摊log)

    3561: DZY Loves Math VI Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 205  Solved: 141 Description ...

  8. java 同步 异步

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 同步 就是  讲究顺序 异步 就是  可以同时进行. 不知道那个家伙起得名字.. 讲究 ...

  9. [转载]C++内存管理

    [导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...

  10. Arab Collegiate Programming Contest 2012 J- Math Homework

    思路:由于只有1-6这几个数,而这几个数的最小公倍数是60,所以只需要求出60以内有多少满足条件的数即可. 再就是求出对于给定的n,求出60的倍数.然后就是怎样求的问题了. 首先可以写成如下形式:   ...