试图在SQL上列出某些日期

时间:2013-11-14 19:01:30

标签: sql oracle

我在表格中有一个日期列表

DATES
----------
10-SEP-03
10-SEP-03
15-SEP-03
15-SEP-03
17-SEP-03
18-SEP-03
30-SEP-03
01-OCT-03
01-OCT-03
05-OCT-03
08-OCT-03
05-MAY-03
10-JUN-03
12-JUN-03

我想在显示它的同时排除10月份的那些,我该如何实现呢? 我试过了!= '%OCT___'的日期;但那没用......

2 个答案:

答案 0 :(得分:2)

假设这是Oracle(因为你没有说明,但是显示SQLPLUS),并且你有一个名为table1的表:

select * 
    from table1
    where extract( month from dates ) <> 10

SQLPLUS中显示的格式是显示格式,而不是数据库中的内部表示。会话的格式由NLS_DATE_FORMAT设置控制,请参阅here for details

为了将来参考,将日期字段与不符合日期格式的文字进行比较是不好的做法。例如,如果有人将NLS_DATE_FORMAT设置为“MM / DD / YYYY”,那么使用“OCT”将不起作用,因为默认格式是期望“10”作为月份值。总是最好使用TO_DATE函数将您的文字值转换为正确的DATE类型。

答案 1 :(得分:0)

OldProgrammer是绝对正确的,他的回答将适用于Oracle&amp; PostgreSQL的。为了防止有人在那里使用T-SQL,Access,mySQL或SQLite,它看起来像这样:

Select *

From Table1

Where MONTH(dates) <> 10