周一至周五 : 08:30 - 17:30 客服专员电话/微信:18049979371 QQ:2982200781
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
列出一段时间或指定时间段之间的日期或年月或数字序列
显示全部楼层 倒序浏览 发表日期 2023-04-22 11:20:52 595次阅读 4次回复
本帖最后由 hessen 于 2023-4-22 11:22 编辑


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

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

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

  1. IF OBJECT_ID('dbo.GetNums','IF') IS NOT NULL
  2. DROP FUNCTION dbo.GetNums;
  3. GO
  4. CREATE FUNCTION dbo.GetNums(@low AS BIGINT, @high AS BIGINT) RETURNS TABLE
  5. AS
  6. RETURN
  7.   WITH
  8.     L0 AS (SELECT c FROM (VALUES(1),(1)) AS D(c)),
  9.         L1 AS (SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B),
  10.         L2 AS (SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B),
  11.         L3 AS (SELECT 1 AS c FROM L2 AS A CROSS JOIN L2 AS B),
  12.         L4 AS (SELECT 1 AS c FROM L3 AS A CROSS JOIN L3 AS B),
  13.         L5 AS (SELECT 1 AS c FROM L4 AS A CROSS JOIN L4 AS B),
  14.         Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) AS rownum
  15.                  FROM L5)
  16. SELECT TOP(@high - @low + 1) @low + rownum - 1 AS n
  17. FROM Nums
  18. ORDER BY rownum;
  19. GO
复制代码


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


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


游客,如果您要查看本帖隐藏内容请回复

3、取得日期序列

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

20230422111815.jpg
游客,如果您要查看本帖隐藏内容请回复

4、取得指定日期之间的年月

比如:要取得2023年1月到2023年4月之间的月份

20230422111910.jpg
游客,如果您要查看本帖隐藏内容请回复












电话/微信:18049989370 QQ:857188287
学习一下学习一下学习一下
学习一下,试试能不能在查询明细表里差期间
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

精彩评论4

学习一下学习一下学习一下
学习一下,试试能不能在查询明细表里差期间
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |