我在表格中有一个日期列表
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___'
的日期;但那没用......
答案 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