Mik*_*e55 2 oracle compare date
我有一个Varchar日期列,我想选择日期列中的日期与系统中当前日期匹配的所有行.我想出了这个查询,但它没有找到任何匹配,虽然今天是星期四,并且星期四存储在日期列中.我不确定这是否是将日期数据类型与varchar进行比较的正确方法.
select * from schedule
where day = (select to_char(sysdate,'day') from dual);
Run Code Online (Sandbox Code Playgroud)
我认为问题来自于to_char默认情况下函数是空间填充的:
SQL> SELECT '.' || to_char(SYSDATE + rownum, 'day') || '.' AS "Day"
2 FROM dual CONNECT BY LEVEL <= 5;
Day
-----------
.friday .
.saturday .
.sunday .
.monday .
.tuesday .
Run Code Online (Sandbox Code Playgroud)
要防止填充,请使用前缀fm:
SQL> select * from dual where to_char(sysdate, 'fmday')='thursday';
DUMMY
-----
X
Run Code Online (Sandbox Code Playgroud)
另请注意,VARCHAR比较区分大小写.
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |