![](/img/trans.png)
[英]SQL Server: how to select records with specific date from datetime column
[英]SQL - How to select a date by day before a specific datetime?
例如,假设我将5/2/2015
作为终点。 我想知道终点之前的max(Thursday)
。 我如何在4/30/2015
结束。 同样为此,我没有一列可供选择。
所以我的子句需要指定'5/2/2015'
SQL 2012
您可以尝试使用以下While循环来实现自己的目标:
Declare @Date date = '2015-05-02'
While DATENAME(WEEKDAY,@Date) <> 'Thursday'
begin
Set @Date = DATEADD(dd, -1,@Date)
end
Select @Date
您可以使用WEEKDAY函数
SELECT TOP 1 column FROM table
WHERE WEEKDAY(column) = 5 AND column<'2015-05-02'
ORDER BY column DESC
如果需要将其作为SELECT的一部分运行,则可以使用以下命令:
SELECT
CAST(DATEADD(DAY,
CASE
WHEN DATEPART(WEEKDAY, GETDATE()) >= 5
THEN 5 - DATEPART(WEEKDAY, GETDATE())
ELSE ((-2 - DATEPART(WEEKDAY, GETDATE())))
END, GETDATE()) AS DATE) AS PreviousThursday
带有样本数据:
DECLARE @Sample TABLE
(
theDate DATETIME
)
INSERT @Sample
SELECT '20100805' UNION ALL -- Thursday
SELECT '20100806' UNION ALL -- Friday
SELECT '20100807' UNION ALL -- Saturday
SELECT '20100808' UNION ALL -- Sunday
SELECT '20100809' UNION ALL -- Monday
SELECT '20100810' UNION ALL -- Tuesday
SELECT '20100811' UNION ALL -- Wednesday
SELECT '20100812' UNION ALL -- Thursday
SELECT '20100813' UNION ALL -- Friday
SELECT '20100814'
SELECT
DATENAME(WEEKDAY, thedate),
thedate,
DATEADD(DAY,
CASE
WHEN DATEPART(WEEKDAY, theDate) >= 5
THEN 5 - DATEPART(WEEKDAY, theDate)
ELSE ((-2 - DATEPART(WEEKDAY, theDate)))
END, theDate)
FROM @Sample
带有变量:
DECLARE @TheDate DATETIME = '5/2/2015'
SELECT
DATEADD(DAY,
CASE
WHEN DATEPART(WEEKDAY, @TheDate) >= 5
THEN 5 - DATEPART(WEEKDAY, @TheDate)
ELSE ((-2 - DATEPART(WEEKDAY, @TheDate)))
END, @TheDate) AS PreviousThursday
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.