SQL Server 如何按三年期(一年分为三部分)获取开始日期

beq87vna  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(128)

我想得到一年中每三分之一部分的开始日期,当我给予一个日期时,返回必须是这三分之一部分的第一天(日期)。
示例:如果参数为“1-april-2023”,则返回值必须为“1-jan-2023”
如果参数为“1-june-2023”,则返回值必须为“1-may-2023”
等等

qxsslcnc

qxsslcnc1#

我们可以通过将4个月乘以(月-1)/4加到年初来计算日期。

CREATE FUNCTION dbo.GetThirdOfYear(@d date)
RETURNS TABLE WITH SCHEMABINDING
AS
  RETURN 
  (
    SELECT Third = DATEADD(MONTH, 
      4*((MONTH(@d)-1)/4), 
      DATEFROMPARTS(YEAR(@d),1,1))
  );

示例用法,给定一个名为Events的表,其中列名为EventDate

SELECT e.EventDate, f.Third
FROM dbo.Events AS e
CROSS APPLY dbo.GetThirdOfYear(e.EventDate) AS f;

相关问题