hessen 发表于 2023-4-22 11:20:52

列出一段时间或指定时间段之间的日期或年月或数字序列

本帖最后由 hessen 于 2023-4-22 11:22 编辑


列出一段时间或指定时间段之间的日期或年月或数字序列

要取得给定的两个数字之间的序列,或者给定的两个日期之间的日期、年月等可以按下面的方法实现:

1、创建表值函数
执行下面的语句在数据库中创建表值函数。

IF OBJECT_ID('dbo.GetNums','IF') IS NOT NULL
DROP FUNCTION dbo.GetNums;
GO
CREATE FUNCTION dbo.GetNums(@low AS BIGINT, @high AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
    L0 AS (SELECT c FROM (VALUES(1),(1)) AS D(c)),
      L1 AS (SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B),
      L2 AS (SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B),
      L3 AS (SELECT 1 AS c FROM L2 AS A CROSS JOIN L2 AS B),
      L4 AS (SELECT 1 AS c FROM L3 AS A CROSS JOIN L3 AS B),
      L5 AS (SELECT 1 AS c FROM L4 AS A CROSS JOIN L4 AS B),
      Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) AS rownum
               FROM L5)
SELECT TOP(@high - @low + 1) @low + rownum - 1 AS n
FROM Nums
ORDER BY rownum;
GO

下面分别是取得数字序列或日期序列的查询写法,比较简单,请回复后查看。


2、取的数字序列
比如要取得1到100之间的自然数序列,可以如下查询


**** Hidden Message *****
3、取得日期序列
比如要得到2023年1月1日到2023年4月22日之间的日期序列,可以按如下查询

**** Hidden Message *****
4、取得指定日期之间的年月
比如:要取得2023年1月到2023年4月之间的月份

**** Hidden Message *****











woalbb 发表于 2023-4-24 16:03:23

学习一下学习一下学习一下

Zhangtianjiao 发表于 2023-5-18 09:37:48

学习学习学习

小文 发表于 2024-4-2 09:30:06

学习一下,试试能不能在查询明细表里差期间
页: [1]
查看完整版本: 列出一段时间或指定时间段之间的日期或年月或数字序列