2011-12-09 60 views
1

我想从下面的SQLTO_DATE无法打印时间戳

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

电流输出打印时间戳 - >1/1/2011(不打印时间戳仅12点,如果min为12:01那正在打印。

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

+0

当你说你要打印它,你想打印它在哪里?这是在一个报告,一个网页,sqlplus? – Peter

回答

-3

可以使用

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

问题标记为Oracle,'TO_DATE'是Oracle语法。这是一个SQL Server解决方案。 –

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; 
4

TO_DATE字符串转换为一个DATE。 A DATE以非人类可读的压缩二进制格式存储。 Oracle DATE没有格式。所以当你让一个程序显示一个日期时,它必须将DATE转换为一个字符串。如果您没有明确指定格式,请使用会话NLS_DATE_FORMAT,SQL * Plus等工具将日期转换为字符串。其他应用程序可以选择不同的方式将日期转换为字符串 - 例如使用客户端的区域设置,或者允许用户配置格式。

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

SELECT to_char(some_date_column, 'dd/mm/yyyy hh:mi:ss AM') 
    FROM some_table 

东西在特定的情况下,你贴出来,因为你必须在你的手作为一个字符串的字符串,你只是想选择它从双,而不是做一个TO_DATE将其转换为一个日期然后TO_CHAR将其转换回字符串。不过,我假设你在实际的表格中有一个实际的DATE,你试图从中选择。

+0

尼斯彻底的答案! – Peter