Sql 今天是Oracle Unix的日期

Sql 今天是Oracle Unix的日期,sql,oracle,Sql,Oracle,我有一个字段,它将日期存储在Unix时间戳中 而不是翻译测试 TO_DATE( TO_CHAR( TO_DATE('19700101', 'yyyymmdd') + + ( FLOOR( ph.change_date / 24 / 60 / 60)))) = '07-NOV-2020' 我只想说 ph.change_date = Todays Date 但要将其作为Unix时间戳 感谢您的帮助。我建议: ts >= (trunc(sysdate) - date '1970-01-0

我有一个字段,它将日期存储在Unix时间戳中

而不是翻译测试

TO_DATE( TO_CHAR( TO_DATE('19700101', 'yyyymmdd') + + ( FLOOR( ph.change_date / 24 / 60 / 60)))) = '07-NOV-2020'
我只想说

ph.change_date = Todays Date  
但要将其作为Unix时间戳

感谢您的帮助。

我建议:

ts >= (trunc(sysdate) - date '1970-01-01') * 24 * 60 * 60 and
ts >= (trunc(sysdate) + 1 - date '1970-01-01') * 24 * 60 * 60
这是索引兼容的,因此它可以使用
ts
上的索引

如果你不在乎这一点,这是另一种选择:

trunc(date '1970-01-01' + ts * interval '1' second) = trunc(sysdate)
我建议:

ts >= (trunc(sysdate) - date '1970-01-01') * 24 * 60 * 60 and
ts >= (trunc(sysdate) + 1 - date '1970-01-01') * 24 * 60 * 60
这是索引兼容的,因此它可以使用
ts
上的索引

如果你不在乎这一点,这是另一种选择:

trunc(date '1970-01-01' + ts * interval '1' second) = trunc(sysdate)

Unix时间在UTC时区内;不要天真地使用SYSDATE,因为它可能位于错误的时区。使用
SYSTIMESTAMP
并将其转换为
UTC

其中ph.change\u date>=(TRUC(时区'UTC')-日期'1970-01-01')*24*60*60
和ph变更日期<(TRUC((SYSTIMESTAMP+时间间隔“1”天)时区“UTC”)-日期“1970-01-01”)*24*60*60

Unix时间在UTC时区;不要天真地使用SYSDATE,因为它可能位于错误的时区。使用
SYSTIMESTAMP
并将其转换为
UTC

其中ph.change\u date>=(TRUC(时区'UTC')-日期'1970-01-01')*24*60*60
和ph变更日期<(TRUC((SYSTIMESTAMP+时间间隔“1”天)时区“UTC”)-日期“1970-01-01”)*24*60*60

谢谢Gordon,例如,它将是trunc((日期'1970-01-01'+ph.change_日期*间隔'1'秒))=trunc(sysdate)@ChristopherJack。这应该行得通。这是错误的,因为Unix时间戳位于UTC时区,
SYSDATE
可能位于不同的时区。感谢Gordon,例如,它将是trunc((日期“1970-01-01”+ph.change\u日期*间隔“1”秒))=trunc(SYSDATE)@christopherck。这应该是正确的。这是错误的,因为UNIX时间戳在UTC时区, SysDeD//C>可能是不同的时区。注意,UNIX时间戳基于1970-01-01 0:00:UTC——如果数据库服务器不在UTC时间上运行,您可能需要在查询中考虑这一点。UNIX时间戳基于1970-01-01 0:00:UTC——如果数据库服务器在UTC时间上运行,则可能需要在查询中考虑这一点。