Xai*_*oft 74 sql t-sql sql-server types
以下查询不会更新datetime字段:
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
我也尝试过没有破折号,但这也不起作用.
OMG*_*ies 141
如有疑问,请使用CAST/CONVERT明确说明数据类型转换:
UPDATE TABLE
   SET EndDate = CAST('2009-05-25' AS DATETIME)
 WHERE Id = 1
Ser*_*glu 32
通常,它应该工作.
但你能尝试一下吗?我的家用电脑上没有SQL,我无法尝试自己
UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1
字符串文字根据当前的dateformat设置显示,请参阅SET DATEFORMAT.一种始终有效的格式是'20090525'格式.
当然,现在你需要定义'不起作用'.没有记录更新?也许这Id=1与任何记录都不匹配......
如果它说'One record changed'那么你可能需要向我们展示你如何验证......
使用DateTime参数是最好的方法.但是,如果您仍希望将DateTime作为字符串传递,则只要使用与语言无关的格式,就不需要CAST.
例如
给定一个表创建如下:
create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())
以下应始终有效:
update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic
以下将有效:
SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1
但是,这不会:
SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1  
这是因为'YYYY-MM-DD'不是语言不可知的格式(从SQL服务器的角度来看).
ISO'YYYY-MM-DDThh:mm:ss'格式也是语言不可知的,当您需要传递非零时间时非常有用.
更多信息:http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
小智 5
UPDATE TABLE
   SET EndDate = CAST('2017-12-31' AS DATE)
 WHERE Id = '123'
| 归档时间: | 
 | 
| 查看次数: | 359935 次 | 
| 最近记录: |