我正在寻找一条好的 SQL 语句,以选择一个表中前一天的所有行。该表包含一个日期时间列。我使用的是 SQL Server 2005。
我正在寻找一条好的 SQL 语句,以选择一个表中前一天的所有行。该表包含一个日期时间列。我使用的是 SQL Server 2005。
获取今天的时间:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
获取昨天的无时间:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
查询昨天的所有行:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
获取 SQL 中的"今天"值的方法:
convert(date, GETDATE())
获取“昨天”:
DATEADD(day, -1, convert(date, GETDATE()))
要获取“今天减去X天”的日期:将-1更改为-X。
因此,对于所有昨天的行,您可以使用以下查询:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
似乎显而易见的答案被忽略了。要获取表(Ttable)中所有数据,并且其中一列(DatetimeColumn)是带时间戳的日期时间,可以使用以下查询:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
这可以轻松地更改为今天,上个月,去年等。
DatetimeColumn BETWEEN DATEADD(day, DATEDIFF(day, 1, GETDATE()) ,0) AND DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
相比要贵得多,因为它需要在每一行上计算DATEDIFF()函数。 - Václav HolušaSELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
这是一个很旧的帖子,但我对此有自己的看法。与其使用两个不同的从属句,一个大于和一个小于,我使用以下语法从一个日期中选择记录。如果你想要一个日期范围,那么之前的答案是正确的。
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
WHERE `date` = CURDATE() - INTERVAL 1 DAY
暂时无法进行测试,但是:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
where cast(columnName as date) = cast(getdate() -1 as date)
为避免时间格式问题,应将表达式的两侧转换为日期。
如果需要更详细地控制间隔时间,则可以尝试以下方法:
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
嗯,将日期时间列转换为日期然后进行比较会更容易。
SELECT * FROM TABLE_NAME WHERE cast(COLUMN_NAME as date) =
dateadd(day,0, convert(date, getdate(), 105))
一种简单的替代方案
Select GETDATE() - 1
将数字1更改为返回相应天数的数量
附注:这将给您时间戳的准确性。
WHERE
子句中使用这些(永恒的)日期。但是,SELECT *
将返回任何带有其原始时间的日期。 - KM.SELECT getdate(),dateadd(day,datediff(day,1,GETDATE()),0)
时,我得到的结果是:2016-02-01 10:27:54.733 2016-01-31 00:00:00.000
。 - KM.