首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pgSQL日期函数

pgSQL日期函数
EN

Stack Overflow用户
提问于 2015-09-01 22:19:31
回答 2查看 64关注 0票数 0

如何使用pgSQL的date函数调整这个pgSQL选择,以便它总是返回日期#的"01“和时间的"00:00:00”?

代码语言:javascript
复制
SELECT s.last_mailing + '1 month'::interval AS next_edition_date FROM

last_mailing被定义为

代码语言:javascript
复制
last_mailing timestamp without time zone

我想要的结果有:

代码语言:javascript
复制
2015-10-01 00:00:00
2015-11-01 00:00:00
2015-12-01 00:00:00
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 22:55:18

你在找date_trunc()

代码语言:javascript
复制
psql (9.5alpha2, server 9.4.4)
Type "help" for help.

testdb=# create table subscriptions as select 1 "id", '2015-07-14T12:32'::timestamp last_mailing union all select 2, '2015-08-15T00:00';
SELECT 2
testdb=# select * from subscriptions;                                                                                            id |    last_mailing     
----+---------------------
  1 | 2015-07-14 12:32:00
  2 | 2015-08-15 00:00:00
(2 rows)

testdb=# select *, date_trunc('month', last_mailing) + interval '1 month' AS next_edition_date from subscriptions;
 id |    last_mailing     |  next_edition_date  
----+---------------------+---------------------
  1 | 2015-07-14 12:32:00 | 2015-08-01 00:00:00
  2 | 2015-08-15 00:00:00 | 2015-09-01 00:00:00
(2 rows)
票数 1
EN

Stack Overflow用户

发布于 2015-09-01 22:28:05

如果希望下一个月的第一天,请使用:

代码语言:javascript
复制
SELECT (s.last_mailing - (1 - extract(day from s.last_mailing)) * interval '1 day') + 
       interval '1 month'  AS next_edition_date
FROM . . .

如果你不想要时间,那就使用date_trunc()

代码语言:javascript
复制
SELECT date_trunc('day',
                  (s.last_mailing - (1 - extract(day from s.last_mailing)) * interval '1 day') + 
                  interval '1 month'
                 ) AS next_edition_date
FROM . . .
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32341766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档