2

我正在尝试将日期时间字段中的时间更新为

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的小时字段???

4

2 回答 2

3

UPDATE 语句没问题。它不会在您的日期列中添加任何“额外的 12”。您遇到的唯一问题是显示值。日期列不以任何特定格式存储其值,例如“MM/DD/YYYY HH24:MI:SS”,它包含二进制数据。当你用这样的语句查询你的表时

SELECT col_name FROM table_name

日期使用会话的 NLS_DATE_FORMAT 显示,可能是“MM/DD/YYYY HH:MI:SS”。在这种格式中,您的日期显示为“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
于 2012-04-09T06:52:25.997 回答
0

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

查询一:

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 to_char(col_name,'MM/DD/YYYY HH24:MI:SS') FROM table_name WHERE col_name1='rer';
于 2012-04-05T14:23:25.803 回答