我在执行下面的select语句时收到无效的数字错误消息。任何人都可以对此问题有所了解。请让我知道。
select TO_DATE(TO_CHAR('2015/01/22 00:00:00','YYYY/MM/DD'),'YYYY/MM/DD')
实际上我想要oracle标准日期格式没有这个日期的时间戳'2015/01/22 00:00:00'
答案 0 :(得分:1)
select to_date('2015/01/22 00:00:00','YYYY/MM/DD HH24:MI:SS') as dt
from dual
小提琴 - http://sqlfiddle.com/#!4/6a3a6/1/0
作为一个FYI,Oracle DATE
数据类型确实包含时间组件(与TIMESTAMP
数据类型的情况一样,不包括小数秒)。
如果要转换值并希望将所有时间值都设置为零,则可以使用trunc
这样的函数(更改时间为12:07:00到00:00:00):
select trunc(to_date('2015/01/22 12:07:00','YYYY/MM/DD HH24:MI:SS'),'DD') as dt_with_time_zerod
from dual
小提琴 - http://sqlfiddle.com/#!4/6a3a6/2/0
如果源本身是一个日期,并且您希望将日期转换为Oracle默认日期格式的字符串(' DD-MON-RR'),您可以通过运行来实现:
select to_char(trunc(to_date('2015/01/22 12:07:00','YYYY/MM/DD HH24:MI:SS'),'DD'),'DD-MON-RR') as dt_with_time_zerod
from dual
答案 1 :(得分:0)
如果是日期字段,没有掩码的to_char将为您提供您想要的内容。
答案 2 :(得分:0)
实际上我想要oracle标准日期格式没有这个日期的时间戳'2015/01/22 00:00:00'
我不确定“Oracle标准日期格式”是什么意思。日期显示的格式将基于您的NLS设置(特别是NLS_DATE_FORMAT
)。如果您只是尝试格式化表示日期的字符串,那么您可能需要以下内容:
SELECT TO_CHAR(TO_DATE('2015/01/22 00:00:00','YYYY/MM/DD HH:MI:SS'), 'YYYY/MM/DD')
FROM dual;
也就是说,TO_CHAR()
和TO_DATE()
函数的顺序错误,而TO_DATE()
的调用日期掩码不完整。
答案 3 :(得分:0)
尝试使用标准ISO 8601 format的日期文字。
date '2015-01-22'
答案 4 :(得分:0)