从时间段获取星期几

时间:2014-03-07 01:57:47

标签: sql postgresql date-arithmetic generate-series

我有两个来自用户输入的日期。我想从jsp获取这两个日期,并创建一个视图,显示每天的工作日:

2013-3-1 MONDAY
2013-3-2 TUESDAY
2013-3-3 WEDNESDAY 

用户输入日期并提供给jsp,例如:

where start='2013-3-1' and end='2013-3-3'

怎么做?

2 个答案:

答案 0 :(得分:1)

这可以更简单:

SELECT to_char(d, 'YYYY-MM-DD') AS day_txt
     , to_char(d, 'FMDay')      AS weekday
FROM   generate_series('2013-03-01'::date
                     , '2013-03-03'::date
                     , interval '1 day') d;

后面这个问题的更多细节:
Remove blank-padding from to_char() output

通常最好使用实际date types进行操作,而不是使用文字表示,但我不了解详细信息或您的要求。

答案 1 :(得分:0)

试试这个:

select to_char(dt, 'yyyy-mm-dd') as date, to_char(dt, 'Day') as day
from (select ('2013-03-01'::date + i) dt
      from generate_series(0,'2013-03-03'::date - '2013-03-01'::date) as t(i)) as t;

您应该参数化查询的日期部分。

此查询中值得记住几点。

  • 日期计算:减去两个日期成为两个日期之间的日期数。
  • generate_series(0, n)生成0,1,... n