我正在尝试查询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
。
你的格式是'YYYY-MM-DD'
,所以:
SELECT *
FROM my_table
WHERE TO_DATE(sum_date, 'YYYY-MM-DD')
BETWEEN (sysdate - 30) AND (sysdate - 1)
您还可以更改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' 之间;