相关疑难解决方法(0)

生成PostgreSQL中两个日期之间的时间序列

我有这样的查询,很好地生成两个给定日期之间的一系列日期:

select date '2004-03-07' + j - i as AllDate 
from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i,
     generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j
Run Code Online (Sandbox Code Playgroud)

它在2004-03-07和之间生成162个日期2004-08-16,这就是我想要的.这段代码的问题是,它不会得到正确的答案时,这两个日期都不同年份,例如,当我尝试2007-02-012008-04-01.

有更好的解决方案吗?

postgresql date time-series postgresql-9.1 generate-series

72
推荐指数
3
解决办法
7万
查看次数

如何结束一天?

我正在使用PostgreSQL 8.4.我有一个表的列,my_tbl其中包含日期(timestamp without timezone).例如:

       date
-------------------
2014-05-27 12:03:20
2014-10-30 01:20:03
2013-10-19 16:34:34
2013-07-10 15:24:26
2013-06-24 18:15:06
2012-07-14 07:09:14
2012-05-13 04:46:18
2013-01-04 21:31:10
2013-03-26 10:17:02
Run Code Online (Sandbox Code Playgroud)

如何编写以下格式返回所有日期的SQL查询:

xxxx-xx-xx 23:59:59
Run Code Online (Sandbox Code Playgroud)

这个日期将设置为当天结束.

sql postgresql date-arithmetic

5
推荐指数
2
解决办法
6693
查看次数

Postgresql 获取给定年份所有 iso 周的第一天和最后一天

select week_num, week_start, week_end,to_char(week_start,'dd Dy Mon yyyy'), to_char(week_end,'dd Dy Mon yyyy') from(
WITH RECURSIVE t(n) AS (
    select (date_trunc('week',(date_trunc('week',(2016 || '-01-04')::date)::date - interval '1 day')::date))::date
  UNION ALL
    SELECT (n - interval '1 week')::date  FROM t WHERE  extract(WEEK from n ) > 1
)
SELECT n as week_start, (n + interval '6 days')::date as week_end, extract(WEEK from n ) as week_num  
FROM t 
) as weeks order by week_num
Run Code Online (Sandbox Code Playgroud)

我写了这个 postgresl 脚本来获取给定年份所有 iso 周的第一天和最后一天。它运行良好,我只需要知道它是否可以改进

sql postgresql

0
推荐指数
1
解决办法
985
查看次数