Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」

Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」工作中遇到一个问题,A表中字段(DateTime1)的数据类型为DateTime,新建了一张表B的SMALLDATETIME1字段的数据来自A表的DateTime1但在将A表字段DateTime1导出到B表的SMALLDATETIME1字段时出现了以下错误后经过排查发现在原来是A表DateTime1字段的值有许多是"1753-01-0100:00:00.000",从而导致转换失败…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

但在将A表字段DateTime1导出到B表的 SMALLDATETIME1字段时出现了以下错误
Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
后经过排查发现在原来是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

Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」

Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」

--如果存储过程存在,则删除重建
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

View Code

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

Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
2076-06-06以后的日期也无法转换
Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
在 smalldatetime时间范围内的日期
Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”「建议收藏」
DECLARE @date DATETIME
SET @date='1753-01-01 00:00:00.000'
SELECT CAST (@date AS SMALLDATETIME);

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164636.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Qt编写的软件在线升级系统(客户端)

    Qt编写的软件在线升级系统(客户端)

  • 标准网页两侧浮动广告代码,支持FF及IE

    标准网页两侧浮动广告代码,支持FF及IE点击这里使用RSS订阅本Blog:网页两侧浮动广告代码经测试支持IE、Firefox等浏览器符合标准的正常工作的对联广告lastScrollY=0;functionheartBeat(){vardiffY;if(doc

  • 视频要不要开hdr_hdr在什么情况下使用

    视频要不要开hdr_hdr在什么情况下使用最近两年HDR这个概念可谓是铺天盖地而来,手机也好PC也好电视也好,都拼命往自己头上扣HDR的帽子。而在某些发烧友眼中,如果看片子不带HDR,堪比步兵变骑兵,一下子变得索然无味。然而,新事物往往也伴随着众多新坑,特别是在软硬件环境复杂的PC平台,稍有不慎就会摔得脸青鼻肿,播HDR的效果甚至不如播普通的片子。PC播HDR的大坑有几何?PC并不是专门为视频播放设计的机器,和专业的蓝光机等播放器相比…

  • apache 负载均衡_windows apache 实现负载均衡

    apache 负载均衡_windows apache 实现负载均衡最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。首先要下载Apache.建议从官网下载http://httpd.apache.org/download.cgi我安装的是最新的版本2.4.25。安装方法参照http://jingyan.baidu.com/article/296

  • 6种不同画法画平行线_「精品」漫画人物轮廓画法(精华版)「建议收藏」

    「教程」漫画人物脸部绘画基础part01脸部轮廓的画法(精修版)一、漫画线条与变形想要将人的脸或表情用自己的风格表现出来,需要抓住其特征,然后进行简单化、夸张化的变形,这是不可或缺的手段。在实际开始动笔画之前,关于如何变形要好好考虑清楚。01.简化主线用少量的线条画出角色的特征难度很高。刚开始练习的可以参考照片,拿真人的脸做练习,然后再逐步减少主线的线条,将画面简单化。①细碎的发丝归拢为…

  • 将oracle端口1521共享_[转载]Oracle 1521端口不通 telnet不通

    将oracle端口1521共享_[转载]Oracle 1521端口不通 telnet不通今天启动工程,突然提示无法连接远程Oracle。我试着telnetOracle服务器1521端口,提示连接失败。D:DocumentsandSettingsAdministrator>telnet10.201.70.681521正在连接到10.201.70.68…不能打开到主机的连接,在端口1521:连接失败Oracle服务器与本机都在局域网内,不存在网络不通问题,怎么会…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号