to_date无法打印时间戳

时间:2011-12-09 23:00:13

标签: sql oracle date to-date

我想从下面的sql打印时间戳

select to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM') from dual;

电流输出 - > 1/1/2011(不是仅在上午12点打印时间戳。如果分钟是12:01则打印。

但我需要输出为1/1/2011 12:00:00 AM

3 个答案:

答案 0 :(得分:4)

TO_DATE将字符串转换为DATEDATE以不可读的二进制格式存储。 Oracle DATE没有格式。因此,当您要求程序显示日期时,必须将DATE转换为字符串。如果您没有通过显式TO_CHAR显式指定格式,SQL * Plus之类的工具会使用会话的NLS_DATE_FORMAT将日期转换为字符串。其他应用程序可以选择不同的方式将日期转换为字符串 - 例如,使用客户端的区域设置,或允许用户配置格式。

如果要以表示DATE的特定格式返回字符串,则需要使用显式TO_CHAR。像

这样的东西
SELECT to_char( some_date_column, 'dd/mm/yyyy hh:mi:ss AM' )
  FROM some_table

在您发布的特定情况下,由于您手中的字符串是一个字符串,您只需要从双重中选择它而不是TO_DATE将其转换为日期,然后是TO_CHAR将其转换回字符串。不过,我假设你在实际的表中有一个实际的DATE,你试图从中选择。

答案 1 :(得分:1)

控制格式的最佳方法是使用to_char并明确指定所需的日期格式。

select to_char(to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM'),'DD/MM/yyyy hh:mi:ss AM') 
  from dual;

答案 2 :(得分:-3)

您可以使用

select  Convert(varchar,'01/01/2011 12:00:00 AM',113)