【问题标题】:Comparing varchar date with sysdate比较 varchar 日期与 sysdate
【发布时间】:2014-09-18 20:32:02
【问题描述】:

我正在尝试查询sum_date WHERE sum_date BETWEEN (sysdate-1) AND (sysdate-30)

在我的SELECT 声明中,我尝试了TO_DATE(sum_date, 'DD-MM-YY') 和sysdate

但它会抛出错误:

"literal does not match format string."

  • Sum_date 存储为varchar20,看起来像2014-01-07。
  • sysdate 看起来像 18-SEP-14。

【问题讨论】:

  • 试试这个 TO_DATE(sum_date, 'yyyy-mm-dd')

标签: sql oracle to-date sysdate


【解决方案1】:

你的格式是'YYYY-MM-DD',所以:

SELECT *
FROM   my_table
WHERE  TO_DATE(sum_date, 'YYYY-MM-DD') 
       BETWEEN (sysdate - 30) AND (sysdate - 1)

【讨论】:

    【解决方案2】:

    您还可以更改会话的NLS_DATE_FORMAT 以满足您的需要:

    更改会话集 NLS_DATE_FORMAT = 'YYYY-MM-DD'; 创建表 y ( y varchar2(10)); 从 y 中选择 y.*, rowid ; select * from y where y 介于 sysdate -10000 和 sysdate +100000 之间; select * from y where to_date(y,'YYYY-MM-DD') 在 '2010-04-01' 和 '2016-04-01' 之间;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多