PostgreSQL Extract()DOW:除了timestamp之外,为什么不使用Date数据类型?

时间:2013-01-22 20:28:35

标签: postgresql date extract dayofweek ordinal

根据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 

为什么需要组合日期类型值的时间分量来确定一周中某一天的序数?单独的日期块是不够的?

2 个答案:

答案 0 :(得分:2)

原始问题引用了8.1版,9.5文档说明:

  

EXTRACT(field FROM source)

     

提取功能从日期/时间值中检索年份或小时等子字段。 source必须是timestamp,time或interval类型的值表达式。 (类型日期的表达式被转换为时间戳,因此也可以使用。)字段是一个标识符或字符串,用于选择从源值中提取的字段。 extract函数返回double精度类型的值。以下是有效的字段名称:

然后,特别是道琼斯指数:

  

     

星期日(0)到星期六(6)的星期几

SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 5
     

请注意,提取的星期几编号与to_char(...,'D')函数的编号不同。

答案 1 :(得分:0)

这只是一个文档错误。