[英]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.