微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle SQL – DATE大于语句

正如标题所示,我想通过查询找到一种方法来检查我的数据集是从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');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐