som*_*ool 0 sql casting sql-server-2005
我有我认为将是一个简单的演员/转换,但我得到一个奇怪的错误.
这是我的sql:
select CONVERT(datetime,1322510754374,104)
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Arithmetic overflow error converting expression to data type datetime.
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
select cast(1322510754374 as datetime)
Run Code Online (Sandbox Code Playgroud)
但我得到同样的错误
我想弄明白.还有另一种方法可以将bigint转换为日期时间吗?
我期待今天的日期:2011-11-29 17:26:52.257,但我所展示的int是较早的一天.
因为我需要将它与它进行比较
getDate()
Run Code Online (Sandbox Code Playgroud)
谢谢.
好吧,我最好的猜测,这是一个合理的,是从1970年1月1日起的毫秒.
你不能使用DATEADD等大的数字.所以这里有两个选项......
DECLARE @stupid BIGINT
SELECT @stupid = 1322510754374
SELECT CAST(@stupid / 86400000.0 + 25567 AS DATETIME)
SELECT DATEADD(MILLISECOND, @stupid % 86400000, DATEADD(DAY, @stupid / 86400000, '1970-01-01'))
-- Both Give... 2011-11-28 20:05:54.373
Run Code Online (Sandbox Code Playgroud)
您需要使用您知道的日期以某种方式仔细检查.但是我觉得很可能......
告诉你的教授,我很高兴不和那些如此血腥无助的人一起工作.
祝你好运 :)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |