sql - TSQL SELECT先前日期的记录

标签 sql sql-server-2005 tsql datetime

我想从表Log中选择所有记录,其中DateAndTime字段值(类型为datetime)用于今天的前一天,无论今天是哪一天。

因此,如果今天是2011-06-08,我想选择DateAndTime大于或等于2011-06-07 00:00:00且还小于2011-06-08 00:00:00的所有行。

我猜这里潜在的陷阱是它在每月的第一天的行为,因为显然2011-06-00这样的日期是无效的,应该是2011-05-31

最佳答案

对于SQL Server 2008,您可以使用它。

select *
from [log]
where cast(DateAndTime as date) = cast(getdate()-1 as date)


2008年之前,您可以使用此

select *
from [log]
where DateAndTime >= dateadd(d, datediff(d, 0, getdate())-1, 0) and
      DateAndTime < dateadd(d, datediff(d, 0, getdate()), 0)


与DBA相关:Cast to date is sargable but is it a good idea?

关于sql - TSQL SELECT先前日期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279440/

相关文章:

mysql - 如何连接外键中的信息?

c# - 如果未安装 SQL Server 2005,我能否创建并连接到 SQL Server CE 数据库?

sql - T-SQL - 跟踪随时间发生的事件

sql - ORA-12728 : invalid range in regular expression

sql - 如何使用 SQL 从数据库表中删除未使用的行?

SQL 连接不同值

c# - 使用存储过程连接数据库中的 4 个表?

performance - FK 上的联接是否比没有 FK 的联接更快?

sql - 使用 WHERE 删除 - 日期、时间和字符串比较 - 非常慢

sql-server - 如何在 XML PATH 查询上创建 View 或函数?