1

I want to print the timestamp from the below sql

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

current output --> 1/1/2011 (not printing the timestamp only for 12 am. if the min is 12:01 then it is printing.

but I need the output as 1/1/2011 12:00:00 AM

4

3 回答 3

4

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

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

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

在您发布的特定情况下,由于您手中有字符串作为字符串,您只需从 dual 中选择它,而不是执行 aTO_DATE将其转换为日期然后 aTO_CHAR将其转换回字符串。不过,我假设DATE您在尝试从中选择的实际表中有一个实际值。

于 2011-12-09T23:21:45.963 回答
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;
于 2011-12-09T23:19:10.883 回答
-3

您可以使用

select  Convert(varchar,'01/01/2011 12:00:00 AM',113)
于 2011-12-09T23:19:00.260 回答