DATEDIFFT、EOMONTH 和 DATE 格式

Posted

技术标签:

【中文标题】DATEDIFFT、EOMONTH 和 DATE 格式【英文标题】:DATEDIFFT,EOMONTH and DATE format 【发布时间】:2021-08-27 10:00:25 【问题描述】:

应该有什么问题

SUM(DATEDIFF(DAY, DATE_S, DATE_E) + 1)   
DATE_S and  DATE_E are DATE TYPE  and maybe DATE_E IS NULL    

第二个问题是我如何才能得到我写作月份的最后一天

 DAY(EOMONTH(DATE_S))   

DATE_S ='2019-05' 我如何修复它我尝试使用 concat 但不起作用

【问题讨论】:

DAY(EOMONTH('2019-05' + '-01')) 应该可以工作。对于第一部分,告诉我们 date_s 和 date_e 是什么样的。 他们看起来像 2029-10-19 它是日期类型 SUM(DATEDIFF(... 应该会按预期工作。 据我所知,我得到了一个恶魔! @iman 。 . .用您正在使用的数据库标记您的问题。 【参考方案1】:

我认为这是关于我昨天在问题 whole absent month-SQL DBMS 上给出的答案的问题。为了连续性,您应该评论答案。

你问有什么问题:

SUM(DATEDIFF(DAY, DATE_S, DATE_E) + 1)   

您提到DATE_E 可能是NULL。这部分查询是针对ABSENT 表的。如果你没有结束一个员工的缺勤,那你应该怎么办?您可以添加WHERE 子句并忽略具有结束缺勤日期的员工(可能是因为他们没有返回工作岗位),或者您可以将其默认为今天,或者您可以执行一些您认为合适的其他操作。

忽略这些值:

SELECT PER_ID, SUM(DATEDIFF(DAY, DATE_S, DATE_E) + 1) AS [DAYS_ABSENT], 
MONTH(DATE_S) AS [MONTH], YEAR(DATE_S) AS [YEAR]
FROM #ABSENT 
WHERE DATE_E IS NOT NULL
GROUP BY PER_ID, MONTH(DATE_S), YEAR(DATE_S);

默认为今天:

SELECT PER_ID, SUM(DATEDIFF(DAY, DATE_S, COALESCE(DATE_E, GETDATE())) + 1) AS [DAYS_ABSENT], 
MONTH(DATE_S) AS [MONTH], YEAR(DATE_S) AS [YEAR]
FROM #ABSENT 
GROUP BY PER_ID, MONTH(DATE_S), YEAR(DATE_S);

最后,得到一个月的最后一天很简单

EOMONTH(DATE_S)

如果DATE_S 的值实际上类似于2019-05,那么它一定不是DATE(因为这不是有效的DATE),而是某种类型的文本。我们知道每个月总有一天,所以您可以这样做:

DECLARE @data VARCHAR(10) = '2019-05';
SELECT EOMONTH(CONCAT(@data, '-01')) AS [LastDayOfMonth];

在whole absent month-SQL DBMS 的答案中,我使用了DAY(EOMONTH(DATE_S)),因为它是获取一个月中天数的最简单方法 - 找到该月的最后一天,然后获取它的日期,即一个月的天数。

如果答案解决了您的问题,请将答案标记为已接受,如果您需要更多说明,请对答案发表评论。

【讨论】:

exakt - 这是关于你的回答,感谢你给我新的信息 @iman 很高兴为您提供新信息,您的问题是什么?上面的答案中有新信息。 这就是我的意思。你昨天和今天的回答给我新的信息谢谢 @iman 抱歉,我误会了你……希望这对你的查询有所帮助,祝你好运! @Tick_Tack 我不使用 DB2,但快速的 Google 搜索显示有一个 LAST_DAY 函数应该可以代替 EOMONTH ibm.com/docs/ko/db2-for-zos/12?topic=functions-last-day 和一个 DAYS 函数而不是 DATEDIFF ibm.com/docs/en/db2-for-zos/11?topic=functions-days 抱歉我不能帮助你更多,我没有任何地方的 DB2 服务器可以尝试一下

以上是关于DATEDIFFT、EOMONTH 和 DATE 格式的主要内容,如果未能解决你的问题,请参考以下文章

EDATE和EOMONTH函数的用法和区别

excel计算当月天数的公式,是怎么弄的?

Impala EOMONTH 等效

SQL Server ->> 时间函数: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETF

数组公式中的嵌套 if 函数

excel中怎样自动计算当月天数?