【发布时间】:2010-06-04 21:43:35
【问题描述】:
我想用两个日期更新一条记录,如果我没有要更新的新值,则保持现有数据不变。
这是一个示例表记录:
id last_foo last_bar
-- ---------- ----------
1 2010-05-30 2010-05-30
我正在使用的查询:
UPDATE sampledates
SET last_foo = @LastFoo,
last_bar = @LastBar
WHERE id = @ID;
如果我的可空日期时间 LastFoo 或 LastBar 为空,我想保持现有 SQL 值不变,否则更新。
例如,假设我正在使用以下值更新此记录(这是 C#,但任何语言都适用):
DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
我希望记录是:
id last_foo last_bar
-- ---------- ----------
1 2010-06-04 2010-05-30
我意识到如果值为空,我可以更改我的查询文本以省略第二列,但我想知道是否有一种方法可以让查询保持原样并指定我不更改指定的列。
【问题讨论】:
-
我查看了stackoverflow.com/questions/1637901/…,但并不完全相同。
-
您使用的是哪个数据库和版本?
-
@Mark:DATETIME 表示 MySQL 或 SQL Server,但提供的所有答案都是不可知的
-
这是 SQL Server 2008。
-
@OMG Ponies:“提供的所有答案都是不可知的”——不是真的。再检查一遍。 :)
标签: sql tsql parameterized