如何将日期列转换为MMDDYYYY格式以比较具有MMDDYYYY格式的其他表列

时间:2012-10-29 12:21:34

标签: sql oracle

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:

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

select  TRUNC(created_on_date) from is_mdm_customer

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

参考:Oracle 11g Trunc(Date)

答案 2 :(得分:0)

如果将 created_on_date 列定义为日期列,则可以使用此项。

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