0

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

我可以在 sql 中找到一个转换器来计算 01/01/1901 00:00:00

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

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

回答不,任何人都可以帮忙。

只是 01/01/1901 00:00:00 的值真的作为应用程序使用它作为空日期。

4

4 回答 4

4

这 2 个日期之间返回的秒数对于 datediff 数据类型来说太多,无法支持 int。我见过其他人以分钟为单位使用差异,然后使用 BigInt 转换为秒。

尝试这样的事情:

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

这是SQL Fiddle

祝你好运。

于 2013-01-24T18:05:10.050 回答
0

听起来你想要datetimeconversion

SELECT CONVERT(VARCHAR, datetick, 120) FROM supportContacts

演示

于 2013-01-24T18:10:44.243 回答
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]
于 2013-01-24T18:00:35.770 回答
0

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

于 2013-01-25T11:03:18.163 回答