Oracle SQL中到日期的时间戳

Oracle SQL中到日期的时间戳,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有一个名为Create_Date的列,其数据格式为19-JUN-18 10.27.00.000000000 PM,数据类型为TIMESTAMP6 我试图在Create_date中查看日期范围,如昨天的日期或两个日期之间的日期,而不使用to_date to_CHARP。Create_date_TIME,'dd/mon/yy'并输入值为'19-JUN-18' 我想使用Create_Date=SYSDATE-1或Create_Date=CURRENT_Date-1来过滤昨天的日期。或者使用Creat

我有一个名为Create_Date的列,其数据格式为19-JUN-18 10.27.00.000000000 PM,数据类型为TIMESTAMP6

我试图在Create_date中查看日期范围,如昨天的日期或两个日期之间的日期,而不使用to_date to_CHARP。Create_date_TIME,'dd/mon/yy'并输入值为'19-JUN-18'

我想使用Create_Date=SYSDATE-1或Create_Date=CURRENT_Date-1来过滤昨天的日期。或者使用Create_Date>=SYSDATE或Create_Date>=CURRENT_Date查看大于或等于今天的日期

有人能帮忙吗?

您可以使用TRUNC:


由于它是一个时间戳,为了清晰起见,我将截短到午夜的当前日期转换为一个时间戳;Oracle将在该列上使用索引,即使您将其保留为日期,但将其显式化也无妨:

where create_date >= cast(trunc(sysdate) as timestamp)
默认为截断到午夜;如果您希望更清楚,可以显式地将“DD”作为第二个参数,尽管有些人会将其视为噪声

如果你想要一个范围,就说昨天:

where create_date >= cast(trunc(sysdate) - 1 as timestamp)
and create_date < cast(trunc(sysdate) as timestamp)
如果要指定其他日期,则可以使用时间戳文字,例如,查看May的所有内容:

where create_date >= timestamp '2018-05-01 00:00:00'
and create_date < timestamp '2018-06-01 00:00:00'

我不确定trunc的默认行为是什么,但我通常提供粒度:truncreate_Date,“DD”会将日期截断为当天。@TravisHegner这是默认值:但您是对的,EIBTI规则非常重要日期和时间戳没有任何固有格式;您只是看到它们,但您的客户决定格式化它们,通常基于您的NLS设置。我还避免在格式模型中使用YY,或依赖隐式转换。
where create_date >= timestamp '2018-05-01 00:00:00'
and create_date < timestamp '2018-06-01 00:00:00'