使用特定格式在两个日期之间搜索

时间:2015-10-20 18:20:22

标签: sql

所以我有一张表格,日期格式如下:15-Jan-13

这显然是2013年1月15日。

问题是,当我尝试搜索01/01/2014和SYSDATE之间的日期范围时,它会出错。

根据日期的存储方式,有没有人知道我根据这种格式设置格式的正确方法?

仅供参考我的原始数据存储为:15-JAN-13 02.23.27.000000000 PM -05:00

我正在将其转换为 TRUNC(变量名)

1 个答案:

答案 0 :(得分:0)

鉴于你在询问" sysdate"然后我会假设您正在使用Oracle。似乎日期格式中具有日期的列也不是实际的。最佳选择是将列更改为日期类型。如果由于某种原因不是一个选项,那么下一个要做的最好的事情就是将文本翻译成日期作为查询的一部分:

select *
  from foo
 where to_date(your_column, 'dd-Mon-yy') between to_date('01/01/2014', 'mm/dd/yyyy')
                                             and sysdate

请注意,to_date期望它的第二个参数与指定日期的结构相匹配,因此' 01/01 / 2014'会匹配日期格式' mm / dd / yyyy'和your_column(值:' 15-Jan-13')将匹配不同的格式' dd-Mon-yy'。一旦所有内容都转换为日期,Oracle就可以执行适当的日期比较。

免责声明:使用to_date将your_column转换为日期意味着如果在your_column上定义了索引,则不会使用它。如果这是一个大型表,您可以预期性能不佳。将列数据类型更改为日期的另一个原因。