IT Japan

PostgreSQL의 날짜 계산 본문

IT/PostgreSQL

PostgreSQL의 날짜 계산

swhwang 2016. 3. 21. 23:22
반응형

 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
Comments