SQL 日期更新出了错,请大虾指点指点。

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:09:00
第一条语句:
UPDATE pos_xfdata
SET xfposdayerror =dateadd(mm,2,xfposday)
WHERE xfposday IN
(SELECT xfposday
FROM pos_xfdataerror
WHERE (XFPosDay >='2009-02-20' AND XFPosDay <'2009-02-23' AND DevID = '9'))
执行后。。那字段内容原先是“2009-02-20 10:00:00”
就变成"04 20 2009 10:00AM"或者 "04 20 2009 10:00:00"
格式变了。。
第二条语句:
update pos_xfdataerror
set xfposday=dateadd(mm,2,xfposday)
where datepart(mm,xfposday)=02
(SELECT xfposday
FROM pos_xfdataerror
WHERE (XFPosDay >='2009-02-20' AND XFPosDate <'2009-02-23' AND DevID = '9'))
执行句后。。报242的错误消息。
“从char数据类型到datetime数据类型的转换导致datetime值越界。
语句已终止。”

之前我用这语句用在另一个客户数据上。执行没问题的,但那时只是将“小时”更新。这次是将“月份”更新。。
这两条语句,我的目的是将原“2009-02-20 10:00:00”改为“2009-04-20 10:00:00”
想了解清楚一点。网上有资料说过。要设置一下电脑的时间格式为24制的的。还有提到过,操作系统XP和2000的设置方式。因为上面第二条语句,在另一客户那执行是没有问题的。他的操作系统是windows2000,但我在XP用

更新出错的主要诱因是XFPostDay字段不是datetime类型的
转换一下日期格式

UPDATE pos_xfdata
SET xfposdayerror =convert(char(19),dateadd(mm,2,xfposday),20)
WHERE xfposday IN
(SELECT xfposday
FROM pos_xfdataerror
WHERE (XFPosDay >='2009-02-20' AND XFPosDay <'2009-02-23' AND DevID = '9'))

-----------------------------------------
肯定跟本机的日期格式是有关的,所以要保证语句在所有机器上都有效,还是在convert函数中指定日期格式。