如何批量更新日期和时间?

3

我需要查询一个日期和时间的更新。我知道如何单独更新日期,但是我在将时间添加到函数中遇到了问题。目前,它显示为4/20/2011 1:32:07 PM。我需要recv_date字段显示为4/21/2011 7:00:00 AM

我的查询语句如下:

UPDATE cxadmin.ro_hist
   SET recv_date = '4/21/2011'
 WHERE recv_serial_nbr = 'SABTSMSSD'

1
这将需要内置函数来处理和操作日期时间,这不是SQL标准,并且在不同的实现中有所不同。请指出您正在使用或打算针对的数据库类型。 - d-live
3个回答

7

SQL日期格式非常严格,需要使用TO_DATE函数将日期的字符串表示转换为Oracle DATE数据类型

UPDATE cxadmin.ro_hist
   SET recv_date = TO_DATE('4/21/2011', 'MM/DD/YYYY')
 WHERE recv_serial_nbr = 'SABTSMSSD'

您的示例中不包含时间部分:

UPDATE cxadmin.ro_hist
   SET recv_date = TO_DATE('4/21/2011 7:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM')
 WHERE recv_serial_nbr = 'SABTSMSSD'

1

你试过了吗?

update cxadmin.ro_hist
set recv_date = '4/21/2011 07:00:00 AM'
where recv_serial_nbr ='SABTSMSSD'

当我尝试这种方式时,我收到了DB错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束。 - Justin
3
@Justin: 这是因为您的默认日期格式不包括时间部分。像OMG Ponies建议的那样使用TO_DATE更安全。 - Jeffrey Kemp

-1
使用to_timestamp('4/21/2011 7:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM')代替TO_DATE。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接