我正在尝试将日期时间字段中的时间更新为
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 :(得分: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
答案 1 :(得分:0)
只是猜测,用于格式化输出的字符串中可能存在错误,“HH24”中缺少“24”。由于您只有上面列出的输入(而不是输出)的格式字符串,我不能说是否是这种情况。这是我的意思的一个例子。
查询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';