1
select  to_date(to_number(to_char(created_on_date,'MMDDYYYY')),'MMDDYYYY') from is_mdm_customer

上面的查询给出

Error starting at line 1 in command:
select  to_date(to_number(to_char(created_on_date,'MMDDYYYY')),'MMDDYYYY') from is_mdm_customer
Error report:
SQL Error: ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:
4

3 回答 3

2

您应该将日期类型存储为 DATE 列,而不是 varchars。如果您需要月、日和年,您也可以为这些添加列。

只需比较日期。如果您不想比较小时、分钟、秒,我会以这种方式存储它们:将时间设置为插入或更新当天的午夜。然后您可以直接比较 DATE。

格式应该只影响视图渲染,仅此而已。

于 2012-10-29T12:25:41.013 回答
1

如果您只想修剪时间部分,请使用 TRUNCATE()。

select  TRUNC(created_on_date) from is_mdm_customer

您还可以将参数传递给 TRUNCATE 函数以不同方式截断日期。但是,如果您只想要 YEAR,则 EXTRACT() 通常会更好。

参考:Oracle 11g Trunc(日期)

于 2012-10-29T12:50:15.727 回答
0

如果列created_on_date被定义为 Date 列,您可以使用它。

从 is_mdm_customer 中选择 to_char(created_on_date,'MMDDYYYY');

于 2012-10-29T12:32:05.697 回答