间隔输入
例子 | 描述 |
---|---|
1-2 | SQL 标准格式:1 年2 个月 |
3 4:05:06 | SQL 标准格式:3 日 4 小时 5 分钟 6 秒 |
1 year 2 months 3 days 4 hours 5 minutes 6 seconds | 传统 antdb 格式:1 年 2 个月 3 日 4 小时 5 分钟 6 秒钟 |
P1Y2M3DT4H5M6S | “带标志符的”ISO 8601 格式:含义同上 |
P0001-02-03T04:05:06 | ISO 8601 的“替代格式”:含义同上 |
在内部,interval
值被存储为months、days 以及 seconds。之所以这样做是因为一个月中的天数是变化的,并且在涉及到夏令时调整时一天可以有 23 或者 25 个小时。months 以及 days 域是整数,而 seconds 域可以存储分数。因为区间通常是从常量字符串或者 timestamp
减法创建而来,这种存储方法在大部分情况下都很好,但是也可能导致预料之外的结果:
SELECT EXTRACT(hours from '80 minutes'::interval); date_part ----------- 1 SELECT EXTRACT(days from '80 hours'::interval); date_part ----------- 0
复制
函数 justify_days
和 justify_hours
可以用来调整溢出其正常范围之外的 days 和 hours。
间隔输出
间隔类型的输出格式可以被设置为四种风格之一:sql_standard
、antdb
、postgres_verbose
或 iso_8601
,设置方法使用 SET intervalstyle
命令。默认值为 antdb
格式。表 5.18 展示了每种输出风格的例子。
如果间隔值符合 SQL 标准的限制(仅年-月或仅日-时间,没有正负值部分的混合),sql_standard
风格为间隔文字串产生符合 SQL 标准规范的输出。否则输出将看起来像一个标准的年-月文字串跟着一个日-时间文字串,并且带有显式添加的符号以区分混合符号的间隔。
当 DateStyle
参数被设置为非 ISO
输出时,postgres_verbose
风格的输出匹配 AntDB 8.4 版本以前的输出。
间隔输出风格例子
风格声明 | 年-月间隔 | 日-时间间隔 | 混合间隔 |
---|---|---|---|
sql_standard | 1-2 | 3 4:05:06 | -1-2 +3 -4:05:06 |
postgres | 1 year 2 mons | 3 days 04:05:06 | -1 year -2 mons +3 days -04:05:06 |
postgres_verbose | @ 1 year 2 mons | @ 3 days 4 hours 5 mins 6 secs | @ 1 year 2 mons -3 days 4 hours 5 mins 6 secs ago |
iso_8601 | P1Y2M | P3DT4H5M6S | P-1Y-2M3DT-4H-5M-6S |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。