正如标题所示,我想通过查询找到一种方法来检查我的数据集是从SYSDATE过去6个月.
SELECT * FROM OrderArchive WHERE OrderDate <= '31 Dec 2014';
我已经尝试了以下,但它返回一个错误,说我的日期格式是错误的.但是,插入数据我根据请求/打算使用该日期格式,没有问题.
Error at Command Line : 10 Column : 25
Blockquote
Error report –
sql Error: ORA-01861: literal does not match format string
01861. 00000 – “literal does not match format string”*Cause: Literals in the input must be the same length as literals in
the format string (with the exception of leading whitespace). If the
“FX” modifier has been toggled on,the literal must match exactly,
with no extra whitespace.*Action: Correct the format string to match the literal.
由于您的查询字符串是一个字面值,假设您的日期被正确存储为DATE,您应该使用
date literals:
SELECT * FROM OrderArchive WHERE OrderDate <= DATE '2015-12-31'
如果要使用TO_DATE
(因为例如,您的查询值不是字面值),建议您使用美国缩写月份名称来显式设置NLS_DATE_LANGUAGE参数.这样一来,它就不会在一些本地化的Oracle安装中崩溃:
SELECT * FROM OrderArchive WHERE OrderDate <= to_date('31 Dec 2014','DD MON YYYY','NLS_DATE_LANGUAGE = American');