我有下面的表'FACT',其中month_title列使用to_char(some_date, 'Month')填充,因此month_title列的数据类型是VARCHAR2(36 BYTE)。
INSTR_ID | TRAINER_ID | LESSON_DAY | MONTH_TITLE | total_registered | INS100 | T101 td> | 6月2 |
---|---|---|---|---|
INS100 | T101 td> | 可能 | 1 | |
INS100 | T101 | 周三6月2 | ||
INS100 | T101 | 周三可能 | 3 | |
INS100 | T102 td> | 可能 | 3 | |
INS100 | T102 | 周五 | 可能 | 1 |
INS100 | T102 | 周六 | 可能 | 1 |
INS100 | T107 | 周一可能 | 1 | |
INS200 | T103 | 周六 | 6月 | 3 |
处理日期时,应该始终使用数据库特定的date
数据类型。这样,你就不会遇到这些问题了。
是的,问题是你的to_char
呼叫。
如果你使用"Month"
格式掩码,Oracle将返回一个固定的宽度,空白填充值。所以表格中的值不是May,而是May"y"后面有6个空格。您几乎肯定想要to_char( some_date, 'fmMonth' )
,它删除尾随空格(或者您可以trunc( to_char( some_date, 'Month' ))
)。