在01/01/1901 00:00:00 sql in sql

时间:2013-01-24 17:51:34

标签: sql

我尝试使用需要日期刻度的红门产品,即634925952000000000 = 01/01/2013 00:00:00

我可以在sql

中找到转换器来处理01/01/1901 00:00:00

没有发生这种情况“dateiff函数导致溢出。分隔两个日期/时间实例的日期部分的数量太大。尝试使用具有不太精确的日期部分的datediff。”

 SELECT DATEDIFF(s, '19010101', GETDATE())*1000000

回答没有人可以帮忙。

只是01/01/1901 00:00:00的值,因为app将此作为空日期使用。

4 个答案:

答案 0 :(得分:3)

这两个日期之间返回的秒数对于datediff数据类型来说太多了,无法支持int。我已经看到其他人在几分钟内使用差异,然后使用BigInt转换为秒。

尝试这样的事情:

SELECT DATEDIFF(mi,'19010101',getDate()) * CONVERT(BIGINT,60)

这是SQL Fiddle

祝你好运。

答案 1 :(得分:0)

尝试以下查询......可能对您有帮助......

DECLARE @date datetime
DECLARE @ticksperday bigint
set @date = getdate()
set @ticksPerDay = 864000000000
declare @date2 datetime2 = getdate()
declare @dateBinary binary(9) = cast(reverse(cast(@date2 as binary(9))) as binary(9))
declare @days bigint = cast(substring(@dateBinary, 1, 3) as bigint)
declare @time bigint = cast(substring(@dateBinary, 4, 5) as bigint)

select @date as [DateTime], @date2 as [DateTime2], @days * @ticksPerDay + @time as [Ticks]

答案 2 :(得分:0)

听起来你想要datetimeconversion

SELECT CONVERT(VARCHAR, datetick, 120) FROM supportContacts

DEMO

答案 3 :(得分:0)

599581440000000000是由于某种原因,上述解决方案都没有提出这个值。