일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- one tab buy
- しまじろう
- 돈까스
- 일본
- 스테이크
- 명령어
- 원탭바이
- 코라쿠엔
- 여름
- 자동차
- 전철
- 칸칸
- 시마지로
- TOY
- 시스템관리
- fish
- 라면
- 동경 모터쇼
- 리눅스
- 신쥬쿠
- 영단어
- Shimajirou
- 점심
- youtuber
- paypay
- Sekai Entertainment
- 토익
- 사이타마
- 돼지갈비
- 米沢、팽이
- Today
- Total
IT Japan
PostgreSQL의 날짜 계산 본문
PostgreSQL의 날짜 계산
오늘은 PostgreSQL로 날짜 계산입니다.
PHP는 각 날짜 계산은 할 수 있지만 SQL에서 날짜 계산 수 있습니다.
우선 오늘 날짜에서 ...
이것은 간단하네요. now 함수 또는 current_timestamp 함수를 사용합니다.
여기에서는 가능한 ANSI 표준에 가고 싶어서 current_timestamp 함수 쪽
를 사용합니다.
select now ()
select current_timestamp
now
2009-06-19 03 : 06 : 34.756232 + 09
우선 ○ 일 전 ○ 일 이후의 날짜입니다.
내일 날짜는 이렇게 씁니다.
select current_timestamp + '1 day'
? column?
2009-06-20 03 : 07 : 34.756232 + 09
30 일 후 100 일 후에도 숫자를 변경하면됩니다.
day에서도 days라도 어디라도 좋은 것 같습니다.
select current_timestamp + '30 days '
select current_timestamp + '100 days'
다음은 어제 날짜입니다.
select current_timestamp + '-1 days'
days에게 마이너스을 켭니다.
이 방법으로 ○ 주 후 (전), ○ 월 이후 (이전) ○ 년 후 (전)도 같이 씁니다.
1 주일 후 날짜를 표시합니다.
select current_timestamp + '1 week'
일주일 전 날짜를 표시합니다.
select current_timestamp + '-1 week'
2 개월 후의 날짜를 표시합니다.
select current_timestamp + '2 months'
반년 전에 날짜를 표시합니다.
select current_timestamp + '-6 months'
3 년 후의 날짜를 표시합니다.
select current_timestamp + '3 years'
2 년 전에 날짜를 표시합니다.
select current_timestamp + '-2 years'
앞으로 1 년 반 전에 날짜를 표시합니다.
select current_timestamp + '-1 years -6 months'
year 및 month를 혼합 할 수 있습니다.
또한 시간, 분, 초 계산도 가능합니다.
years, months에 해당하는 부분을 ... hour 또는 minute 또는 second로 변경합니다.
2 시간 후 날짜와 시간을 표시합니다.
select current_timestamp + '2 hours'
지금까지는 오늘 날짜에서 계산을하고 왔지만 어떤 날짜에서 날짜 계산을
하고 싶은 경우도 있습니다.
이 경우는 이렇게 씁니다.
예를 들어, 2008 년 6 월 19 일부터 반년 후 데이트를 원한다면
select timestamp '2008-06-19'+ '6 months'
라고 씁니다.
결과는 이렇게됩니다.
? column?
2008-12-19 00:00:00
timestamp 데이터 형식을 지정하여 원하 는건 테이션에서 날짜를 묶습니다.
또한 마이크로 초까지 지정할 수 있습니다.
select timestamp '2009-12-17 14 : 53 : 35.050011 + 09 +'6 months '
? column?
2010-06-17 14 : 53 : 35.050011
다음은 두 날짜의 차이를 표시합니다.
FIFA 월드컵이 2010 년 6 월 10 일 남아프리카 공화국에서 개최되는군요.
것으로, 월드컵까지 앞으로 며칠 SQL로 써보십시오.
select timestamp '2010-06-10'- timestamp current_timestamp
? column?
355 days 20 : 49 : 34.252294
오 ~. 앞으로 355 일 20 시간 49 분 34 초 네요. 선수 여러분 힘내줬으면
주물입니다.
임의의 날짜끼리 이렇게 쓰면 차이를 요청할 수 있습니다.
select timestamp '2009-06-30 12:00'- timestamp '2009-06-01 12:00'
? column?
29 days
그렇다면 이들을 바탕으로 더 복잡한 계산을 해 보겠습니다.
우선 요일 계산합니다.
우선 기본의 기본에서.
오늘은 무슨 요일인지를 표시합니다.
0이 일요일 6 토요일 오늘은 금요일이므로 5가 반환됩니다.
select extract ( 'dow'from current_timestamp) as day
day
5
PostgreSQL에서는 date_part 함수도 사용할 수 있지만, 여기에서는 ANSI 표준 쪽을 사용합니다.
어제 요일입니다. 방금 사용한 날짜 계산을 사용합니다.
select extract ( 'dow'from current_timestamp + '-1 day') as day
day
4
어제는 목요일이므로, 목요일에 해당하는 4가 반환됩니다.
기타는 지금까지의 계산을 동일합니다.
또 하나. 마지막으로 월말 계산을합니다.
date_trunc 함수를 사용합니다.
날짜 부분에서 잘하고 표시 해주는 매우 편리한 기능입니다.
첫 번째 인수로 year, month, day 같은 날짜 부분을 지정합니다.
예를 들어, 날짜까지 표시하려면
select date_trunc ( 'day', current_timestamp)
라고 씁니다.
결과는 이렇게 표시됩니다.
date_trunc
2009-06-19 00 : 00 : 00 + 09
날짜부터는 잘린 0으로되어 있습니다.
이것을 이용하여 월말의 날짜를 표시합니다.
지난달 날짜를 내고 싶은 경우는 이렇게 씁니다.
select date_trunc ( 'month', current_timestamp) + '-1 days'
우선 세월 먼저 날짜와 시간을 자릅니다.
과연 날짜는 0이라고 할 수는 없기 때문에 날짜는 1 일입니다.
달 첫날과 동일합니다.
그리고, 1 일 이전을 요구하는 것으로 지난달 말 날짜가 나옵니다.
SQL을 실행하면 ...
? column?
2009-05-31 00 : 00 : 00 + 09
다음 날짜 부분의 인수를 지난달 날짜하려고합니다.
select date_trunc ( 'month', timestamp '2009-05-15') + '-1 days'
? column?
2009-04-30 00:00:00
또한 3 월의 날짜를 지정하여 2 월의 월말의 날짜를내어 봅니다.
select date_trunc ( 'month', timestamp '2008-03-15') + '-1 days'
? column?
2008-02-29 00:00:00
윤년도 문제가 없습니다.
그러나 date_trunc 함수는 매우 불행하게도, PostgreSQL 만의 함수입니다.
그래서 다른 데이터베이스에서이 방법은 사용할 수 없습니다.
또한 원래 PostgreSQL에는 월말의 날짜를내는 함수가 없기 때문에 case 문을 이용하여
말일을 요구하는 사례도 흔히 볼 수 있지만,
개인적으로 date_truck 함수와 timestamp 형 계산의 조합이 더 확실 분
찾기 쉬운 생각합니다.
PostgreSQL을 사용하고있는 여러분은 꼭 사용해보십시오.
아끼지 였죠.
2009 년 6 월 19 일 10:27
카테고리 :
* PostgreSQL을,
*
* 데이터베이스
태그 :
* current_timestamp,
*
* date_trunc,
*
* now,
*
* PostgreSQL을,
*
* timestamp,
*
* 날짜 계산
'IT > PostgreSQL' 카테고리의 다른 글
PostgreSQL9의 Replication (0) | 2016.05.30 |
---|---|
pgpool-II 3.4의 신기능 (0) | 2016.04.10 |
PostgreSQL의 파라미터 튜닝 (0) | 2016.03.21 |
tmc_db01 backup 수순 (0) | 2016.03.21 |
postgresql.conf 기본적인 튜닝 (0) | 2016.03.21 |