为了账号安全,请及时绑定邮箱和手机立即绑定

从日期范围生成天数

从日期范围生成天数

繁花不似锦 2019-06-01 16:17:22
从日期范围生成天数我想运行这样的查询select ... as days where `date` is between '2010-01-20' and '2010-01-24'并返回如下数据:days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24
查看完整描述

4 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

下面是使用视图的另一个变体:

CREATE VIEW digits AS
  SELECT 0 AS digit UNION ALL
  SELECT 1 UNION ALL
  SELECT 2 UNION ALL
  SELECT 3 UNION ALL
  SELECT 4 UNION ALL
  SELECT 5 UNION ALL
  SELECT 6 UNION ALL
  SELECT 7 UNION ALL
  SELECT 8 UNION ALL
  SELECT 9;CREATE VIEW numbers AS
  SELECT
    ones.digit + tens.digit * 10 + hundreds.digit * 100 + thousands.digit * 1000 AS number  FROM
    digits as ones,
    digits as tens,
    digits as hundreds,
    digits as thousands;CREATE VIEW dates AS
  SELECT
    SUBDATE(CURRENT_DATE(), number) AS date  FROM
    numbers;

然后你可以简单地做(看看它有多优雅?):

SELECT
  dateFROM
  datesWHERE
  date BETWEEN '2010-01-20' AND '2010-01-24'ORDER BY
  date

更新

值得注意的是,您只能生成从当前日期开始的过去日期..如果要生成任何类型的日期范围(过去、未来和两者之间),则必须使用此视图:

CREATE VIEW dates AS
  SELECT
    SUBDATE(CURRENT_DATE(), number) AS date  FROM
    numbers  UNION ALL
  SELECT
    ADDDATE(CURRENT_DATE(), number + 1) AS date  FROM
    numbers;


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 671 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信