[sql] to_char () 함수를 사용하지 않고 PostgreSQL의 날짜에서 연도와 월을 추출하는 방법은 무엇입니까?
sql :을 선택하고 싶습니다.
SELECT "year-month" from table group by "year-month" AND order by date
여기서 year-month-날짜 형식은 “1978-01”, “1923-12″입니다.
couse work의 to_char를 선택 하지만 “올바른”순서는 아닙니다.
to_char(timestamp_column, 'YYYY-MM')
답변
date_part(text, timestamp)
예 :
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
답변
to_char(timestamp, 'YYYY-MM')
당신은 그 주문이 “옳지 않다”고 말하지만, 나는 그것이 왜 잘못된 지 알 수 없습니다 (적어도 10000 년이 다가올 때까지).
답변
date_trunc
방법을 사용하여 요일 (또는 주, 연도, 일 등 원하는 다른 항목)을 자릅니다.
월별 주문에서 판매를 그룹화하는 예 :
select
SUM(amount) as sales,
date_trunc('month', created_at) as date
from orders
group by date
order by date DESC;
답변
다음을 사용하여 월 이후의 모든 정보를자를 수 있습니다 date_trunc(text, timestamp)
.
select date_trunc('month',created_at)::date as date
from orders
order by date DESC;
예 :
입력 :
created_at = '2019-12-16 18:28:13'
출력 1 :
date_trunc('day',created_at)
// 2019-12-16 00:00:00
출력 2 :
date_trunc('day',created_at)::date
// 2019-12-16
출력 3 :
date_trunc('month',created_at)::date
// 2019-12-01
출력 4 :
date_trunc('year',created_at)::date
// 2019-01-01
답변
첫 번째 옵션
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가 제안한이 솔루션은 제 경우에는 잘 작동했습니다. 나는 정말로 ‘일’정보를 버리고 싶었다.
답변
EXTRACT 함수 pgSQL을 사용할 수 있습니다.
EX- date = 1981-05-31
EXTRACT(MONTH FROM date)
it will Give 05
자세한 내용은
PGSQL 날짜-시간
답변
보다 작지 않은 “보다 큼”기능에 대해 작동합니다.
예를 들면 :
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;
오류가 발생합니다.