SQL-datetime溢出。列出从1970年到今天的所有约会
我有下面的查询,它将列出1970年和当前日期之间的所有用户约会,但我得到的错误是datetime导致溢出。我什么都试过了,但我仍然不知道如何解决这个问题SQL-datetime溢出。列出从1970年到今天的所有约会,sql,sql-server,Sql,Sql Server,我有下面的查询,它将列出1970年和当前日期之间的所有用户约会,但我得到的错误是datetime导致溢出。我什么都试过了,但我仍然不知道如何解决这个问题 select dodate, header, starttime, stoptime, userid, custid, objid, infoid, aname from appointment where
select dodate,
header,
starttime,
stoptime,
userid,
custid,
objid,
infoid,
aname
from appointment
where dodate > 2440587
and DATEADD(d,dodate - 2440587,'1970-01-01') >= CONVERT(date,GETDATE())
and done=0
and del=0
and userid='ak'
也许这会帮助你 SQL Server中不允许日期时间数据类型的值早于1753年1月1日。SQL Server拒绝所有不在1753到9999范围内的值 另一种SQL Server数据类型smalldatetime存储日期和时间的精度低于datetime数据类型。此数据类型的有效日期范围为1900年1月1日至2079年6月6日 您好
S..也许这会帮助你 SQL Server中不允许日期时间数据类型的值早于1753年1月1日。SQL Server拒绝所有不在1753到9999范围内的值 另一种SQL Server数据类型smalldatetime存储日期和时间的精度低于datetime数据类型。此数据类型的有效日期范围为1900年1月1日至2079年6月6日 您好
SQLSever中的S..2440587是8582-02-06,它会导致DATEADD转到公元前8395年,sql server不支持它 因为2440587是UNIX时间戳,所以从1970-01-01开始,它应该以秒为单位 因此,您只需在0中更改2440587
select dodate, header, starttime,stoptime,userid,custid,objid,infoid,aname
from appointment
where
(dodate > 0)
AND DATEADD(SECOND, dodate, '1970-01-01') <= GETDATE()
and done=0 and del=0 and userid='ak'
选择dodate、header、starttime、stoptime、userid、custid、objid、infoid、aname
预约
哪里
(十二烷酸盐>0)
而DATEADD(第二个,dodate,'1970-01-01')2440587在SQLServer中是8582-02-06,它会导致DATEADD转到公元前8395年,sql server不支持它
因为2440587是UNIX时间戳,所以从1970-01-01开始,它应该以秒为单位
因此,您只需在0中更改2440587
select dodate, header, starttime,stoptime,userid,custid,objid,infoid,aname
from appointment
where
(dodate > 0)
AND DATEADD(SECOND, dodate, '1970-01-01') <= GETDATE()
and done=0 and del=0 and userid='ak'
选择dodate、header、starttime、stoptime、userid、custid、objid、infoid、aname
预约
哪里
(十二烷酸盐>0)
和DATEADD(第二个,dodate,'1970-01-01')选择dodate、header、starttime、stoptime、userid、custid、objid、infoid、aname
预约
其中dodate>转换(日期'01/01/1970',103)
和dodate
选择dodate、header、starttime、stoptime、userid、custid、objid、infoid、aname
预约
其中dodate>转换(日期'01/01/1970',103)
和dodate
2440587
你的陈述是什么?它是一个01.01.1970为什么你必须将1970年1月1日转换为2440587?那么,dodate
是一个儒略日吗?你为什么要以这种形式存储数据,与其在insert/update期间将其预先转换为SQL Server的本机数据类型,不如@DavidJackowiak认为UNIX时间信息在这个问题上会非常有用。您的语句的2440587
部分是什么?它是一个01.01.1970为什么必须将01.01.1970转换为2440587?那么,dodate
是朱利安节吗?你为什么要以这种形式存储数据,与其在insert/update期间将其预转换为SQL Server的本机datetime
数据类型,不如@DavidJackowiak说UNIX时间信息在这个问题上会非常有用。我可以知道与这个问题相关的内容吗?当你超出这些范围时,你会得到datetime溢出异常。我可以知道与此问题相关的内容吗问题?当您超出这些范围时,就会出现datetime溢出异常。如果该字段存储为int(如您在评论中所说),他可以定义2440587='19700101'
,那么dateadd
@Alex不会有任何问题。您是对的,这取决于日期在dodate中的存储方式。我认为这是日期的int值,也就是1900-01-01的天数。如果该字段存储为int(如您在评论中所说),他可以定义2440587='19700101'
,那么dateadd
@Alex不会有任何问题。您是对的,这取决于日期在dodate中的存储方式。我认为这是从1900-01-01的日期转换为int,也就是从1900-01-01的天数。虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。标记者/审阅者:虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。标记者/审阅者: