我需要一些指导,以便在一周的时间内从数据库中获取价值。我已经弄清楚如何使用DATEPART
我可以做DATEPART(wk, date_value) = DATEPART(datepart, GETDATE())
,但我无法弄清楚如何在一周中的特定日期进行操作。就像我只想从本周二到下周二检索信息。任何人都可以提供任何指导吗?
谢谢!
答案 0 :(得分:1)
在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
答案 1 :(得分:0)
我建议创建一个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结束(这可能因你的配置而异),它应该可以工作。请注意,如果在星期二调用它将在星期二提供 next ,而不是今天;要反转此行为,请将“&lt; 3”更改为“&lt; = 3”。