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

时间:2015-02-03 15:37:16

标签: sql oracle to-date

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

以下是我的数据值示例:

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

这是我的问题:

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

以下是输出示例:

03-DEC-14

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

4 个答案:

答案 0 :(得分:2)

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

DATE

要调整此项,请运行:

select value 
from nls_session_parameters 
where parameter = 'NLS_DATE_FORMAT';

然后你也应该看到时间。

答案 1 :(得分:1)

您正在尝试显示日期时间值。使用 TO_CHAR 以及正确的 FORMAT MODEL

例如,

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

DATE 包含日期和时间部分。您只需确保使用适当的格式模型来显示它。否则,您最终会得到一种格式,该格式取决于您的区域设置特定的NLS设置

答案 2 :(得分:0)

您可以使用时间戳

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

答案 3 :(得分:0)

如果您想要一个返回日期时间部分的查询而不必更改nls_date_format,您可以将从to_date函数获得的日期转换为文本表示(默认文本表示为{{1正如你所发现的那样):

dd-Mon-yy

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