从 GETDATE() 中减去存储为 Bigint 的日期以计算当前年龄



我对SQL比较陌生,需要一些帮助。 我有一个第三方票务数据库,将日期存储为 bigint。 我希望能够计算门票的年龄。 我可以使用dateadd(s,CREATEDTIME/1000,'01-01-1970'(将bigint转换为日期格式。 我正在努力将其与当前日期进行比较以计算机票的年龄。

我尝试过datediff(DAY,(s,CREATEDTIME/1000,'01-01-1970'(,GETDATE((((作为"票龄",希望这能奏效,但没有运气。

这是此时的完整查询 -

选择 dateadd(s,CREATEDTIME/1000, '01-01-1970'( 作为 'Created_Date',
datediff(DAY,(s,CREATEDTIME/1000, '01-01-1970'(,GETDATE(((( 作为"票龄", 工作订单 ID 作为"请求 ID"从工作订单

通常在计算天数时,由于 datediff 函数的工作方式,我计算小时数,然后除以 24。(4 月 4 日、23:59 和 4 月 5 日 00:01 之间的日期差异为 1,这并不总是人们想要的(。

因此,执行查询以获取您似乎想要的数字会得到如下所示的内容:

select dateadd(SECOND,CREATEDTIME/1000, '01-01-1970') as 'Created_Date',
CAST(DATEDIFF(HOUR,dateadd(SECOND,CREATEDTIME/1000, '01-01-1970'),GETDATE()) AS DECIMAL(15,4))/24 AS 'ticket age', 
WORKORDERID as 'Request ID' 
FROM WorkOrder

好吧,使用:

dateadd(second, CREATEDTIME/1000, '1970-01-01') < getdate()

或者,如果要与没有时间组件的当前日期进行比较:

dateadd(second, CREATEDTIME/1000, '1970-01-01') < convert(date, getdate())

请注意,此代码拼写出second,并以规范的 YYYY-MM-DD 格式放置日期。

最新更新