Eug*_*nio 11 sql postgresql date
select extract(dow from datefield)
Run Code Online (Sandbox Code Playgroud)
从0到6提取一个数字,其中0是星期日; 有没有办法在SQL中获取星期一假设星期一开始周(因此0将是星期一)?
a_h*_*ame 20
isodow
The day of the week as Monday (1) to Sunday (7)
Run Code Online (Sandbox Code Playgroud)
所以,你只需要从结果中减去1:
psql (9.6.1)
Type "help" for help.
postgres=> select extract(isodow from date '2016-12-12') - 1;
?column?
-----------
0
(1 row)
postgres=>
Run Code Online (Sandbox Code Playgroud)
Mr.*_*ale 12
使用date_part函数dow()
这里0 =星期日,1 =星期一,2 =星期二,... 6 =星期六
select extract(dow from date '2016-12-18'); /* sunday */
Run Code Online (Sandbox Code Playgroud)
输出:0
select extract(isodow from date '2016-12-12'); /* Monday */
Run Code Online (Sandbox Code Playgroud)
输出:1
Max*_*oll 12
如果您想要工作日的文本版本,那么您可以使用to_char(date, format)提供日期和所需格式的功能。
根据https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE我们有以下格式选项可用于日期。我已经展示了一些输出示例。根据文档,缩写的日期值为 3 个英文字符,其他区域设置可能会有所不同。
select To_Char("Date", 'DAY'), * from "MyTable"; -- TUESDAY
select To_Char("Date", 'Day'), * from "MyTable"; -- Tuesday
select To_Char("Date", 'day'), * from "MyTable"; -- tuesday
select To_Char("Date", 'dy'), * from "MyTable"; -- tue
select To_Char("Date", 'Dy'), * from "MyTable"; -- Tue
select To_Char("Date", 'DY'), * from "MyTable"; -- TUE
Run Code Online (Sandbox Code Playgroud)