繁体   English   中英

SQL Server在一周内获得价值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM