rud*_*ter 107 sql sql-server sql-server-2005
我正在寻找一个好的SQL语句来从一个表中选择前一天的所有行.该表包含一个日期时间列.我正在使用SQL Server 2005.
KM.*_*KM. 192
今天没有时间:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
Run Code Online (Sandbox Code Playgroud)
得到昨天没有时间:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
Run Code Online (Sandbox Code Playgroud)
仅查询昨天的所有行:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
Run Code Online (Sandbox Code Playgroud)
Kon*_*man 39
要在SQL中获取"今天"值:
convert(date, GETDATE())
Run Code Online (Sandbox Code Playgroud)
得到"昨天":
DATEADD(day, -1, convert(date, GETDATE()))
Run Code Online (Sandbox Code Playgroud)
要获得"今天减去X天":将-1更改为-X.
因此对于所有昨天的行,您得到:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
Run Code Online (Sandbox Code Playgroud)
cal*_*eve 16
似乎缺少明显的答案.要从表(Ttable)获取所有数据,其中列(DatetimeColumn)是带有时间戳的日期时间,可以使用以下查询:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
Run Code Online (Sandbox Code Playgroud)
这很容易改变到今天,上个月,去年等.
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)
它是一个非常古老的线程,但这是我对它的看法.而不是两个不同的条款,一个大于和小于.我使用以下语法从A日期中选择记录.如果你想要一个日期范围,那么之前的答案是要走的路.
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,对于昨天的记录,X将为-1
| 归档时间: |
|
| 查看次数: |
350800 次 |
| 最近记录: |