如何在不使用to_char()函数的情况下从PostgreSQL中提取日期和月份?

时间:2010-12-25 20:29:11

标签: sql postgresql

我想选择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')

7 个答案:

答案 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;

我遇到错误。