我对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
答案 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