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

时间:2019-04-29 17:59:47

标签: sql sql-server

我对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()))为'门票年龄',     WORKORDERID作为“请求ID” 从WorkOrder

2 个答案:

答案 0 :(得分:0)

那么,如何使用:

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

或者,如果您希望与没有时间成分的当前日期进行比较:

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

请注意,此代码说明了second,并将日期以规范的YYYY-MM-DD格式显示。

答案 1 :(得分:0)

通常在计算天数时,由于datediff函数的工作原理,我先计算小时数,然后除以24。(4月4日23:59到4月5日00:01之间的datediff以天为单位是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