【问题标题】:Query to find the last 4 Tuesday from current date查询从当前日期开始的最后 4 个星期二
【发布时间】:2021-09-25 12:02:46
【问题描述】:

我正在编写双向报告。 所以我有一张桌子

occupancy ID | rent amount | Date of payment

每周的每个星期二支付租金。我需要一个 SQL 查询来查找从当前日期开始的最后 4 个星期二。随着当前日期的继续,它需要是动态的,它需要自动获取前 4 个星期二

【问题讨论】:

  • 我建议指出您使用的确切 RDBMS。日期算术是非常特定于供应商的
  • 不要标记垃圾邮件。您的标题是“SQL Server”,但您标记了 [mysql]、[sql-server] [postgresql]。 标记您真正使用的 RDBMS,并且标记该 RDBMS。
  • 虽然我承认,日历表在这里是非常宝贵的资源。

标签: sql sql-date-functions


【解决方案1】:

我猜,您正在寻找日期时间函数的正确语法。 这里是周数,月..等的示例以及如何使用它。 希望对您的查询有所帮助。

DECLARE @today         DATETIME = GETDATE()
DECLARE @todayDayName        VARCHAR(10) = DATENAME(WEEKDAY, @today)
        , @todayShortDay       VARCHAR(10) = CONVERT(VARCHAR(10), @today, 103)
        , @todayDATE           DATE        = CAST(@today AS DATE)
        , @todayDayNumber      INT         = DATEPART(DAY, @today)
        , @todayWeekNumberYear INT         = DATEPART(wk, @today)
        , @todayWeekNumber     INT         = DATEDIFF(WEEK, DATEADD(MONTH, DATEDIFF(MONTH, 0, @today), 0), @today) +1
        , @month               INT         = MONTH(@today)
select 
    @today as DayNow, 
    @todayDayName [TodayDayName], 
    @todayShortDay [TodayShortDay], 
    @todayDATE todayDATE, 
    @todayDayNumber [TodayDayNumber], 
    @todayWeekNumberYear TodayWeekNumberYear, 
    @todayWeekNumber TodayWeekNumber, 
    @month [month]


select top 100 
    UpdateDate, 
    [date] = CAST(UpdateDate AS DATE), 
    [DateName] = DATENAME(WEEKDAY, UpdateDate), 
    WeekNumber = DATEDIFF(WEEK, DATEADD(MONTH, DATEDIFF(MONTH, 0, UpdateDate), 0), UpdateDate) +1,
    monthnumber = MONTH(UpdateDate)
from [dbo].TABLE 
where DATENAME(WEEKDAY, UpdateDate) = 'Tuesday'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多