繁体   English   中英

在Oracle SQL中将字符串转换为日期

[英]Convert string to date in Oracle SQL

我正在尝试将string列转换为Oracle SQL中的date

这是我的数据值示例:

'03/12/14 11:00:00'

这是我的查询:

select to_date(A,'DD/MM/YY HH24:MI:SS')
from MyTable

这是输出示例:

03-DEC-14

为什么我的查询仅返回日期而不返回小时?

假设您使用的是SQL * Plus(或SQL Developer),则在显示 DATE值时将应用默认的NLS_DATE_FORMAT。 要验证您当前的格式,可以运行:

select value 
from nls_session_parameters 
where parameter = 'NLS_DATE_FORMAT';

要对此进行调整,请运行:

alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

然后,您还应该看到时间。

您试图显示日期时间值。 TO_CHAR与正确的FORMAT MODEL一起使用。

例如,

select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual;

DATE由日期和时间部分组成。 您只需要确保使用适当的格式模型来显示它即可。 否则,您最终得到的格式取决于您特定语言环境的NLS设置

您可以使用时间戳记

select to_timestamp(A, 'DD/MM/YY HH24:MI:SS') from MyTable

如果您希望查询返回日期的时间部分而无需更改nls_date_format ,则可以将从to_date函数获得的日期转换为文本表示形式(发现的默认文本表示形式为dd-Mon-yy )。像这样:

select to_char(
   to_date(A,'DD/MM/YY HH24:MI:SS'),
   ''DD/MM/YY HH24:MI:SS')
from MyTable;

理想情况下,应将MyTable的A列定义为日期列,而不是varchar2列。 这样做有几个原因; 数据完整性,以及更好的SQL优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM