我需要找到一周中某一天发生的所有事件 - 比如星期三。我可以使用to_char(event_date,' Day')转换我的日期字段以显示日期,但是当我将其放在where子句中时,它不会返回任何结果。
例如: to_char(event_date,' Day')=' Wednesday'
我也试过这个: 选择工作日 (选择to_char(event_date,' Day')"工作日"来自活动) 工作日='星期三'
两者都不会返回任何结果。有没有办法实现这个目标?
答案 0 :(得分:0)
也许你的数据库语言不是英文,我建议你像这样设置NLS_DATE_LANGUAGE
:
to_char(event_date, 'Day','NLS_DATE_LANGUAGE=ENGLISH')
检查例如
select to_char(sysdate, 'Day','NLS_DATE_LANGUAGE=ENGLISH') from dual; --returns Tuesday
select to_char(sysdate, 'Day','NLS_DATE_LANGUAGE=SPANISH') from dual; --returns Martes
答案 1 :(得分:0)
无论如何,这不是好方法。例如,使用我的NLS设置的to_char(event_date,'Day')将产生'Среда',而不是'Wednesday'。尝试使用
where to_char(event_day, 'D') = '3'
它应该可以工作,例如
SQL> select dt, to_char(dt, 'D')
2 from (select trunc(sysdate, 'MM') + rownum - 1 dt from dual connect by level <= 31)
3 where to_char(dt, 'D') = '3';
DT TO_CHAR(DT,'D')
----------- ---------------
03.12.2014 3
10.12.2014 3
17.12.2014 3
24.12.2014 3
31.12.2014 3