我正在研究一个系统,它将日期和时间存储为firebird sql中的整数,无论出于何种原因我都不明白。无论如何,我需要从这个脚本中将这些数字作为日期对象进行比较:
SELECT FIRST 100 a.S_ID, a.TR_SEQ, a.TR_DATE, a.TR_TIME, a.TR_TERM_SLA, r.DR_NAME,
FROM TRANSACK a, READER r, EVENT_TYPE ev, MASTER m
WHERE a.TR_TERM_SLA = r.T_ADDR and a.TR_EVENT = ev.ET_TYPENO and a.TR_MSTSQ = m.MST_SQ
ORDER BY a.TR_DATE DESC
现在,我想添加到这样的条件:
and CAST(TR_DATE as DATE) < '2013-11-19' and and CAST(TR_DATE as DATE) > '2013-11-20'
...以上条件不起作用,因为TR_DATE列是整数,格式就像今天的'20131120'。我想我之前必须施放到弦上,然后施放到日期,或者一些这样的体操练习。
实际上有一种方法让我在某种转换后使用TR_DATE作为日期对象吗?
答案 0 :(得分:3)
由于“整数日期”采用yyyymmdd
格式,您可以安全地比较它们。因此,不是将它们转换为日期,而是将日期转换为相同格式的整数:'2013-11-19'
整数将为20131119
,因此
and TR_DATE < 20131119 and TR_DATE > 20131120
可以将整数转换为实际日期类型,但这样做会更多。