<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ho_odie.log</title>
        <link>https://velog.io/</link>
        <description>일본에서 일하는 프로그래머</description>
        <lastBuildDate>Fri, 01 Nov 2024 06:54:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ho_odie.log</title>
            <url>https://velog.velcdn.com/images/ho_odie/profile/bbe466ae-fc30-423c-a1b8-13f2bf7a7a99/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ho_odie.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ho_odie" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[PostgreSQL : INTERVAL]]></title>
            <link>https://velog.io/@ho_odie/PostgreSQL-INTERVAL</link>
            <guid>https://velog.io/@ho_odie/PostgreSQL-INTERVAL</guid>
            <pubDate>Fri, 01 Nov 2024 06:54:55 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>본 글을 ChatGPT를 활용하여 작성 하였습니다.
만약, 틀린 정보가 있다면 알려주시면 감사하겠습니다 :)</p>
</blockquote>
<p><code>INTERVAL</code>은 PostgreSQL에서 시간 간격(time interval)을 나타내는 데이터 타입으로, 날짜와 시간을 조작하거나 계산할 때 사용된다. 예를 들어, 특정 날짜에 일수나 시간을 더하거나 빼야 할 때 유용합니다. <code>INTERVAL</code>은 연도, 월, 일, 시간, 분, 초 단위로 간격을 지정할 수 있으며, SQL 쿼리에서 다양한 시간 연산에 활용된다.</p>
<h3 id="interval-기본-구문">INTERVAL 기본 구문</h3>
<pre><code>SELECT current_date + INTERVAL &#39;1 day&#39;;</code></pre><ul>
<li>이 예시는 오늘 날짜에 하루를 더하는 경우이다. INTERVAL 뒤에 간격을 &#39;숫자 단위&#39; 형태로 지정하여 사용한다.</li>
</ul>
<h3 id="interval-사용-예시">INTERVAL 사용 예시</h3>
<ol>
<li>날짜 연산
날짜에 일, 시간 등을 추가하거나 빼는 작업에 사용한다.<pre><code>SELECT &#39;2023-10-01&#39;::date + INTERVAL &#39;7 days&#39;;</code></pre></li>
</ol>
<ul>
<li>결과: <code>2023-10-08</code></li>
<li>2023년 10월 1일에 7일을 더한 날짜를 반환</li>
</ul>
<ol start="2">
<li>시간 계산
특정 시간에 몇 시간 또는 몇 분을 더하거나 뺄 때 사용할 수 있다.<pre><code>SELECT &#39;12:30:00&#39;::time + INTERVAL &#39;2 hours 15 minutes&#39;;</code></pre></li>
</ol>
<ul>
<li>결과: <code>14:45:00</code></li>
<li>12시 30분에 2시간 15분을 더한 시간이 반환된다.</li>
</ul>
<ol start="3">
<li>나이 계산
출생일로부터 현재까지의 나이를 계산할 때 AGE() 함수와 함께 INTERVAL을 사용할 수 있다.<pre><code>SELECT AGE(current_date, &#39;2000-01-01&#39;::date);</code></pre></li>
</ol>
<ul>
<li>결과: <code>24 years 10 mons</code> (현재 날짜를 기준으로 계산 2024/11/01)</li>
<li>생년월일로부터 현재까지의 나이를 반환</li>
</ul>
<h3 id="interval-활용-생활-예시">INTERVAL 활용 생활 예시</h3>
<ol>
<li>프로모션 기간 계산</li>
</ol>
<ul>
<li>예를 들어, 특정 상품의 할인 기간을 일주일 동안 적용하고자 할 때, 오늘 날짜로부터 일주일 후를 구해 자동으로 할인 기간을 설정할 수 있다.<pre><code>SELECT current_date + INTERVAL &#39;7 days&#39; AS promotion_end_date;</code></pre></li>
<li>오늘 날짜에 7일을 더해 프로모션 종료일을 계산</li>
</ul>
<ol start="2">
<li>일정 관리</li>
</ol>
<ul>
<li>일정 관리 앱에서 사용자가 설정한 일정에 30분 전 알림을 설정할 때, INTERVAL을 사용하여 알림 시간을 자동으로 계산할 수 있다.<pre><code>SELECT &#39;2023-11-01 14:00:00&#39;::timestamp - INTERVAL &#39;30 minutes&#39; AS reminder_time;</code></pre></li>
<li>일정 시작 시간 30분 전을 계산하여 알림 시간을 설정합니다. 결과는 2023-11-01 13:30:00이 된다.</li>
</ul>
<ol start="3">
<li>구독 만료 날짜 설정</li>
</ol>
<ul>
<li>한 달, 혹은 일 년 구독의 만료일을 설정할 때 INTERVAL을 사용할 수 있다. 예를 들어, 구독일로부터 1년 후를 만료일로 지정할 수 있다.<pre><code>SELECT subscription_start_date + INTERVAL &#39;1 year&#39; AS subscription_end_date
FROM subscriptions;</code></pre></li>
<li>결과: 구독 시작일로부터 1년 후의 날짜를 반환하여 구독 만료일을 계산</li>
</ul>
<h3 id="interval로-지원하는-시간-단위">INTERVAL로 지원하는 시간 단위</h3>
<ul>
<li><code>year</code>, <code>month</code>, <code>day</code>, <code>hour</code>, <code>minute</code>, <code>second</code></li>
<li>여러 단위를 복합적으로 사용할 수도 있다.<pre><code>SELECT &#39;2023-10-01&#39;::date + INTERVAL &#39;1 year 2 months 3 days&#39;;</code></pre><h3 id="주의-사항">주의 사항</h3>
</li>
</ul>
<ol>
<li><p>INTERVAL에 숫자를 곱하거나 나눌 수도 있다.</p>
<pre><code>SELECT INTERVAL &#39;1 day&#39; * 3;</code></pre></li>
</ol>
<ul>
<li>결과는 3 days가 된다.</li>
</ul>
<ol start="2">
<li>INTERVAL을 빼는 경우도 가능하다.<pre><code>SELECT &#39;2023-10-01&#39;::date - INTERVAL &#39;1 month&#39;;</code></pre></li>
</ol>
<ul>
<li>2023년 10월 1일에서 한 달을 빼서 2023-09-01이 된다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>