2012-04-05 67 views
2

我真的试图在日期时间字段更新时间更新时间Oracle数据库

UPDATE table_name 
    SET col_name=to_DATE('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS') 
WHERE col_name1='rer'; 

在DB更新后,output是这样

'04/02/2012 12:12:00'

额外12它加在小时字段,
我怎样才能使这个不添加额外12小时字段?

+0

如何显示输出(您使用什么查询)? – 2012-04-06 08:35:33

+0

marcin,只是我使用的select语句,如“从tab_name中选择col_name”,后面加上where条件。 – palak 2012-04-09 05:54:43

回答

3

更新声明是确定的。它不会为您的日期列添加任何“额外12”。您遇到的唯一问题是显示值。日期列不以任何特定格式(如“MM/DD/YYYY HH24:MI:SS”)存储其值,它包含二进制数据。当你与这样的语句查询您的表像

SELECT col_name FROM table_name 

使用会话的NLS_DATE_FORMAT,这可能是“:MI:SS MM/DD/YYYY HH”显示的日期。在这种格式中,你的日期显示为'04/02/2012 12:12:00'。如果您在会议

ALTER SESSION SET NLS_DATE_FORMAT='MM/DD/YYYY HH24:MI:SS'; 

运行下面的语句,然后查询

SELECT col_name FROM table_name 

你会看到你想要的格式的日期。其他方式是使用TO_CHAR,如

SELECT TO_CHAR(col_name, ''MM/DD/YYYY HH24:MI:SS') FROM table_name 
+0

Marcin,首先感谢你的回复,即使在运行你的alter语句后,我仍然有相同的日期格式,我试过这个 - > SELECT TO_DATE('03/24/2012 00:30:00','MM/DD/YYYY HH24:MI:SS')FROM DUAL ..它仍然只显示小时数为“12” – palak 2012-04-09 07:37:12

+0

您使用什么工具执行这些查询(SQL * Plus?PL/SQL Developer?SQL Developer?other?) – 2012-04-10 06:56:46

0

只是猜测,用于格式化输出的字符串可能有错误,'24'缺少'HH24'。既然你只有上面列出的输入(而不是输出)的格式字符串,我不能说是否是这种情况。这是我的意思的一个例子。

查询1:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH24:mi:ss') from dual; 

结果1:

04/02/2012 00:12:00 

问题2:

select to_char(to_date('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS'), 
    'mm/dd/yyyy HH:mi:ss') from dual; 

结果2:

04/02/2012 12:12:00 

要清楚,我想解决你的问题可能是检查的格式在你的SELECT语句,并选择您的数据是这样的:

SELECT to_char(col_name,'MM/DD/YYYY HH24:MI:SS') FROM table_name WHERE col_name1='rer'; 
+0

:我不认为这不是这样,虽然它给你正确的答案,但在我尝试执行更新时使用'hh:mi:ss'和时间00:12:00它给了我'ORA-08149小时必须在1和12之间' – 2012-04-05 20:16:38

+0

我不是说他在更新语句中使用像hh:mi:ss这样的格式字符串,我猜测他可能会在select语句中使用它没有在上面显示。在这种情况下,他会在表格中存储正确的时间,但是当他使用select和to_char查看时,它的格式不正确。我不认为你会从'tableName#'中选择to_char(#dateTimeField#,'mm/dd/yyyy HH:mi:ss')这样的语句获得ORA-08149:# – user506069 2012-04-05 20:32:35

+0

:是的,我们不会得到上面的错误,而选择',但他所提到的,他需要更新语句的时间'00:12:00',所以在这种情况下更新失败并抛出上述错误。在我的情况下'HH24:MI:SS '正在为我工​​作并获得理想的结果'2012年4月2日00:12:00。我认为这必须与'v $ parameter'数据字典中的NLS_DATE_FORMAT参数相关。 – 2012-04-05 20:43:28