SQL查询以基于月结束日期生成月薪日期

戈帕尔·比斯瓦斯(Gopal Biswas)

我想根据一年的“月薪”和“月结”日期生成月薪日期。假设我选择“ 2016年1月26日”作为“支付日期”,选择“ 2016年1月31日”作为“ “月末”日期和日期范围是2016年。则“月末”日期将是该年月份的最后一天,支付日期将是(月的“月末”日期-“支付日期”在整个2016年的其他月份中添加了一个月)。我为付款日期“ 01/26/2016”和“ 01/31/2016”作为“月末”日期添加了结果集的屏幕截图。我的SQL版本是2012。我想知道SQL中的查询。

任何帮助将不胜感激。

在此处输入图片说明

“ 02/08/2016”(“付款日期”)和“ 01/31/2016”(“月末”)的屏幕截图 在此处输入图片说明

与您的最后一个问题相同的逻辑

您可以如下所示:

DECLARE @StartDate DATETIME = '2016.01.26'
DECLARE @EndDate DATETIME = '2016.01.31'

SELECT
    DATENAME(dw, A.Month) DayNameOfMonth,
    A.[Month],
    DATENAME(dw, A.[Pay Date]) DayNameOfPayDate,
    A.[Pay Date]
FROM
(
    SELECT
         DATEADD(DAY, -1 - (DAY(EOMONTH(@EndDate)) - DAY(@EndDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@EndDate), 1, 1))) 'Month',
         DATEADD(DAY, -1 - (DAY(EOMONTH(@StartDate)) - DAY(@StartDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@StartDate), 1, 1))) 'Pay Date'
    FROM
        (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)
) A

结果:

DayNameOfMonth                 Month      DayNameOfPayDate               Pay Date
------------------------------ ---------- ------------------------------ ----------
Sunday                         2016-01-31 Tuesday                        2016-01-26
Monday                         2016-02-29 Wednesday                      2016-02-24
Thursday                       2016-03-31 Saturday                       2016-03-26
Saturday                       2016-04-30 Monday                         2016-04-25
Tuesday                        2016-05-31 Thursday                       2016-05-26
Thursday                       2016-06-30 Saturday                       2016-06-25
Sunday                         2016-07-31 Tuesday                        2016-07-26
Wednesday                      2016-08-31 Friday                         2016-08-26
Friday                         2016-09-30 Sunday                         2016-09-25
Monday                         2016-10-31 Wednesday                      2016-10-26
Wednesday                      2016-11-30 Friday                         2016-11-25
Saturday                       2016-12-31 Monday                         2016-12-26

更新

DECLARE @StartDate DATETIME = '2016.01.31' -- month end
DECLARE @EndDate DATETIME = '2016.02.08' -- pay date

SELECT         
    DATEADD(DAY, -1 - (DAY(EOMONTH(@StartDate)) - DAY(@StartDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@StartDate), 1, 1))) 'Month End',        
    DATEADD(DAY, DATEDIFF(DAY, @StartDate, @EndDate), DATEADD(DAY, -1 - (DAY(EOMONTH(@StartDate)) - DAY(@StartDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@StartDate), 1, 1)))) 'Pay Date'
FROM
    (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)

更新2

DECLARE @StartDate DATETIME = '2016.01.31' -- month end
DECLARE @EndDate DATETIME = '2016.02.08' -- pay date

SELECT
    *
FROM
(
    SELECT         
        DATEADD(DAY, -1 - (DAY(EOMONTH(@StartDate)) - DAY(@StartDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@StartDate), 1, 1))) 'Month End',        
        DATEADD(DAY, DATEDIFF(DAY, @StartDate, @EndDate), DATEADD(DAY, -1 - (DAY(EOMONTH(@StartDate)) - DAY(@StartDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@StartDate), 1, 1)))) 'Pay Date'
    FROM
        (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)
) A
WHERE
    YEAR(A.[Pay Date]) = YEAR(@EndDate)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于日期和日期的SQL查询

来自分类Dev

SQL查询删除重叠的开始日期和结束日期

来自分类Dev

Oracle SQL-创建select语句,该语句将检索该月的每个结束日期,但比较该月结束后一两天的值

来自分类Dev

如何基于日期自动运行SQL查询?

来自分类Dev

SQL查询以基于日期创建字段

来自分类Dev

SQl查询以基于日期差异获取表

来自分类Dev

SQL查询,返回基于行数的日期条目

来自分类Dev

SQL查询非活动用户的最后结束日期

来自分类Dev

Oracle SQL查询中的开始/结束日期和时间

来自分类Dev

在Java中从开始日期到结束日期生成日期

来自分类Dev

开始日期和结束日期之间的每个项目的MS SQL Server查询总和

来自分类Dev

开始日期及结束的SQL语句

来自分类Dev

SQL查询以基于当前日期获取数据

来自分类Dev

基于日期的查询MongoDB集合

来自分类Dev

Mongo 4.2查询基于日期

来自分类Dev

基于日期的平均访问查询

来自分类Dev

MongoDB查询基于日期的文档

来自分类Dev

基于日期自动生成代码

来自分类Dev

基于开始日期和结束日期的 Tableau 体积计算

来自分类Dev

SQL:从多个开始日期和结束日期获取范围日期

来自分类Dev

SQL查询中的日期

来自分类Dev

SQL查询搜索日期

来自分类Dev

SQL最大日期查询

来自分类Dev

SQL查询搜索日期

来自分类Dev

如何按月/周生成开始和结束日期向量,但如何使向量的最后结束日期以今天结束?

来自分类Dev

SQL基于日期的必需数据

来自分类Dev

SQL语句-基于日期的联接

来自分类Dev

基于日期比较的 SQL 计数

来自分类Dev

SQL查询以生成日期范围内的每月支付日期