【问题标题】:PostgreSQL Extract() DOW : why not Date datatype in addition to timestamp?PostgreSQL Extract() DOW:为什么除了时间戳之外没有日期数据类型?
【发布时间】:2013-01-06 04:57:20
【问题描述】:
根据PostgreSQL 8.1版日期时间函数docs:
道琼斯指数
星期几(0 - 6;星期日为 0)(仅适用于时间戳值)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 5
为什么 Date 数据类型不是该函数的有效参数?如果星期几的顺序不因语言环境而改变:
0 - 6; Sunday is 0
为什么需要组合日期类型值的时间分量来确定一周中一天的序数?单独的日期块还不够吗?
【问题讨论】:
标签:
postgresql
date
extract
dayofweek
ordinal
【解决方案1】:
原始问题引用了 8.1 版,9.5 文档指出:
EXTRACT(field FROM source)
提取函数从日期/时间值中检索子字段,例如年或小时。 source 必须是时间戳、时间或间隔类型的值表达式。 (日期类型的表达式被转换为时间戳,因此也可以使用。)字段是一个标识符或字符串,用于选择从源值中提取的字段。 extract 函数返回双精度类型的值。以下是有效的字段名称:
再后来,特别是在 dow 下:
道
星期天 (0) 到星期六 (6)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 5
请注意,extract 的星期几编号与 to_char(..., 'D') 函数的不同。