我想从下面的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
答案 0 :(得分:4)
TO_DATE
将字符串转换为DATE
。 DATE
以不可读的二进制格式存储。 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)