我想选择sql:
SELECT "year-month" from table group by "year-month" AND order by date
,在哪里
年 - 月 - 日期格式“1978-01”,“1923-12”。
选择to_char工作,但不是“正确”订单:
to_char(timestamp_column, 'YYYY-MM')
答案 0 :(得分:144)
to_char(timestamp, 'YYYY-MM')
你说订单不是“正确的”,但我不明白为什么它是错的(至少到10000年为止)。
答案 1 :(得分:44)
date_part(text, timestamp)
e.g。
date_part('month', timestamp '2001-02-16 20:38:40'),
date_part('year', timestamp '2001-02-16 20:38:40')
http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html
答案 2 :(得分:30)
使用date_trunc
方法截断当天(或您想要的任何其他内容,例如,周,年,日等)。
按月按订单分组销售的示例:
select
SUM(amount) as sales,
date_trunc('month', created_at) as date
from orders
group by date
order by date DESC;
答案 3 :(得分:11)
您可以使用date_trunc(text, timestamp)
select date_trunc('month',created_at)::date as date
from orders
order by date DESC;
答案 4 :(得分:9)
第一个选项
date_trunc('month', timestamp_column)::date
它将保留所有月份从第一天开始的日期格式。
示例:
2016-08-01
2016-09-01
2016-10-01
2016-11-01
2016-12-01
2017-01-01
第二个选项
to_char(timestamp_column, 'YYYY-MM')
@yairchu提出的这个解决方案在我的案例中运作良好。我真的很想放弃“一天”。资讯
答案 5 :(得分:9)
您可以使用EXTRACT函数pgSQL
EX- date = 1981-05-31
EXTRACT(MONTH FROM date)
it will Give 05
了解更多详情 PGSQL Date-Time
答案 6 :(得分:0)
它适用于“大于”功能,且不小于。
例如:
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) > '2000' limit 10;
工作正常。
但
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) < '2000' limit 10;
我遇到错误。