1

我正在尝试将string列转换为dateOracle SQL。

这是我的数据价值示例:

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

这是我的查询:

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

以下是输出示例:

03-DEC-14

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

4

4 回答 4

3

假设您使用的是 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';

然后你也应该看到时间。

于 2015-02-03T15:45:20.110 回答
1

您正在尝试显示日期时间值。使用TO_CHAR和适当的FORMAT MODEL

例如,

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

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

于 2015-02-03T15:45:04.637 回答
0

您可以使用时间戳

select to_timestamp(A, 'DD/MM/YY HH24:MI:SS') from MyTable
于 2015-02-03T15:43:34.177 回答
0

如果您想要一个返回日期的时间部分而无需更改的查询,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 优化。

于 2015-02-03T15:54:58.360 回答