Sql 如何在where子句中将日期转换为mm/dd/yyyy
我今天添加了数千条记录,但在一天中的不同时间,我能看到它们的唯一方法是按ADDdate DESC订购 但是,我需要使用带有日期的where子句在其中更新一个particulr字段的update语句 问题是,由于它们都是在不同的时间输入的,我如何才能转换/转换此字段,以便我只能执行以下操作 基本上,每个添加的记录都有一个datetime格式的AddDate字段,我希望它转换为mm/dd/yyyy格式Sql 如何在where子句中将日期转换为mm/dd/yyyy,sql,sql-server,date,Sql,Sql Server,Date,我今天添加了数千条记录,但在一天中的不同时间,我能看到它们的唯一方法是按ADDdate DESC订购 但是,我需要使用带有日期的where子句在其中更新一个particulr字段的update语句 问题是,由于它们都是在不同的时间输入的,我如何才能转换/转换此字段,以便我只能执行以下操作 基本上,每个添加的记录都有一个datetime格式的AddDate字段,我希望它转换为mm/dd/yyyy格式 Update SpecialField SET SpecialField = NULL Where
Update SpecialField
SET SpecialField = NULL
Where ADDdate = '09/18/2017'
请帮忙。谢谢。如果您试图更新2017年9月18日
ADDdate
的所有记录(无论何时),您可以执行以下操作:
UPDATE SpecialField, SpecialField2
SET SpecialField = NULL
WHERE ADDdate > '09/18/2017' AND ADDdate < '09/19/2017'
更新特殊字段,特殊字段2
设置SpecialField=NULL
其中ADDdate>2017年9月18日,ADDdate<2017年9月19日
您应该始终使用标准日期格式。我更喜欢YYYY-MM-DD,尽管SQL Server稍微偏爱YYYYMMDD
这里有两种方法:
Update SpecialField
set SpecialField = NULL
where ADDdate >= '2017-09-18' and ADDdate < '2017-09-19';
在这两种情况下,SQL Server都将使用索引,因此它们都是表示逻辑的合理方式
如果您特别想要今天的日期,请使用getdate()
,例如:
Update SpecialField
set SpecialField = NULL
where cast(ADDdate as date) = cast(getdate() as date);
如果这是一个常见的要求,您可以简单地不用担心键入日期
where addDate >= cast(getdate() as date)
and addDate < dateadd(day, -1, cast(getdate() as date))
其中addDate>=cast(getdate()作为日期)
和addDate
编辑
这与Gordon的答案有一些相似之处,因为它使用了cast(getdateas date)
。不同之处在于,他过滤的函数结果往往会降低性能。可能重复的
where addDate >= cast(getdate() as date)
and addDate < dateadd(day, -1, cast(getdate() as date))