V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CUMTProgrammer
V2EX  ›  程序员

有什么好的方法在 SQL 里面生成一段时间吗?

  •  
  •   CUMTProgrammer · 2018-12-12 14:38:57 +08:00 · 1605 次点击
    这是一个创建于 2155 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我想生成一段 12 月 1 日至 12 月 4 日的日期,可以这么插入: select '2018-12-01','2018-12-02','2018-12-03','2018-12-04' from dual 但是我想要数据是一列的,不会操作,有没有大神指点下。

    如果用临时表,就要插入 4 条数据,要生成一年的日期就是 365 条。开销太大。 想问下还有什么好的办法吗?

    Immortal
        1
    Immortal  
       2018-12-12 14:43:40 +08:00
    mysql 有时间函数 自己 google 下
    一般你这样的需求都是代码去处理的 不会在 sql 里写一堆语句去搞这个
    TommyLemon
        2
    TommyLemon  
       2018-12-12 15:10:38 +08:00
    一堆语言一个 for 循环就搞定的事情非得放 SQL 里做?
    如果说配置运行环境麻烦,写一个 html 里面 script 标签嵌入 js 代码用 log 输出日期,
    然后浏览器打开去控制台复制结果就行了
    Raymon111111
        3
    Raymon111111  
       2018-12-12 15:13:31 +08:00
    数据库机器资源比服务机器资源要贵.
    xio
        4
    xio  
       2018-12-12 15:18:34 +08:00
    postgres 有的 date generate_series
    RoyL
        5
    RoyL  
       2018-12-12 15:20:55 +08:00
    写个 procedure,循环一下不就行了....
    l00t
        6
    l00t  
       2018-12-12 15:31:58 +08:00
    看你是 from dual, 那么多半用的是 Oracle 了。在 Oracle 中可以这么做:

    今天是 12 号,所以

    select sysdate - 9 + level from dual
    connect by level <=4
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5278 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.