[英]SQL Server getting value within a week time period
我需要一些指导,以便在一周时间内从数据库中获取价值。 我已经弄清楚了如何使用DATEPART
来执行DATEPART(wk, date_value) = DATEPART(datepart, GETDATE())
但我不知道该怎么做。 就像我只想从这个星期二到下一个星期二检索信息。 任何人都可以向任何人提供任何指导吗?
谢谢!
在SQL Server中,您可以执行以下操作:
Set DateFirst 1;
Select DateAdd(d, -DatePart(dw, CURRENT_TIMESTAMP) + 3
, CURRENT_TIMESTAMP) As ThisWeekTuesday
, DateAdd(d, 7, DateAdd(d, -DatePart(dw, CURRENT_TIMESTAMP) + 3
, CURRENT_TIMESTAMP)) As TuesdayAfterThat
在MIcrosoft Access中,您将执行以下操作:
Select DateAdd("d", -DatePart("w", Now()) + 3, Now()) As ThisWeekTuesday
, DateAdd("d", 7, DateAdd("d", -DatePart("w", Now()) + 3
, Now())) As TuesdayAfterThat
我建议创建一个Dates表-每天存储一条记录,其中包含SQLDate,DateAsText,Year,Month,MonthAsText,DayOfWeek,DayOfWeekAsText等字段。然后,您可以像这样查询:
SELECT
MIN(SQLDate)
FROM
Dates
WHERE
SQLDate > SYSDATETIME()
AND DayOfWeekText = 'Tuesday'
如果您现在不希望这样做,还可以使用DATEPART()和DATEADD()。 对于下一个下一个星期二,我相信这将是:
DECLARE @TodaysDayOfWeek = DATEPART(DW, SYSDATETIME())
SELECT
CASE WHEN @TodaysDayOfWeek < 3 DATEADD( 3 - @TodaysDayOfWeek, SYSDATETIME())
ELSE DATEADD(10 - @TodaysDayOfWeek, SYSDATETIME() END
我没有方便的MS SQL来确认这一点,但是如果DW在周日的1开始并在周六的7结束,它应该可以工作(这取决于您的配置)。 注意,如果在星期二调用,它将在下周二而不是今天进行; 若要扭转这种现象,请将“ <3”更改为“ <= 3”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.