날짜 작업은 데이터베이스 관리에서 일반적인 요구사항이며, 특히 SQL을 사용할 때 그렇습니다. 기록 보관이나 날짜 관련 정보를 기반으로 데이터를 조작하기 위해 데이터베이스에 날짜 값을 삽입해야 하는 경우가 많습니다. 이 문서에서는 SQL 데이터베이스에 날짜를 삽입하는 다양한 기술을 탐구하고 다양한 요구에 대한 솔루션을 제공합니다.
이 가이드 전체에서 브라우저에서 직접 날짜 삽입을 연습할 수 있는 인터랙티브 SQL 연습을 찾을 수 있습니다—데이터베이스 설정이 필요 없습니다. 쿼리를 작성하고, 즉각적인 피드백을 받고, SQL에서 날짜 처리에 자신감을 가지세요.
다양한 데이터베이스 관리 시스템은 날짜를 처리하기 위한 자체 전문 구문과 함수로 SQL을 구현합니다. 그럼에도 불구하고 SQL에서 날짜를 삽입할 때 성공을 보장하기 위해 따를 수 있는 몇 가지 표준 관행이 있습니다. 일반적인 방법을 자세히 살펴보고 상황에 가장 적합한 것을 선택하는 데 도움을 드리겠습니다.
SQL 날짜 및 시간 데이터 타입 이해하기
SQL로 작업할 때, 특히 날짜와 시간을 다룰 때 다양한 데이터 타입을 이해하는 것이 필수적입니다. 이 섹션에서는 SQL에서 사용되는 다양한 날짜 및 시간 데이터 타입과 데이터베이스에 효과적으로 삽입하는 방법을 살펴봅니다.
SQL 데이터베이스에서 사용되는 몇 가지 일반적인 날짜 및 시간 데이터 타입이 있습니다. 여기에는 다음이 포함됩니다:
- DATE: 이 타입은 ‘YYYY-MM-DD’ 형식으로 날짜만 저장합니다.
- TIME: ‘HH:MM:SS’ 형식으로 시간 값을 저장합니다.
- DATETIME: DATE와 TIME의 조합으로, ‘YYYY-MM-DD HH:MM:SS’ 형식을 사용합니다.
- TIMESTAMP: DATETIME과 유사하게 작동하지만 시간대 설정의 영향을 받습니다.
- YEAR: 연도를 정수로 저장하며, 2자리 또는 4자리 형식입니다.
각 데이터베이스 시스템에는 추가적인 특정 날짜 및 시간 데이터 타입이나 약간의 변형이 있을 수 있습니다. 그러나 언급된 이러한 타입은 SQL 데이터베이스에서 자주 사용됩니다.
SQL에서 날짜 및 시간 값을 삽입할 때 적절한 형식이 중요합니다. 각 데이터 타입에 대한 형식 요구사항의 간략한 개요는 다음과 같습니다:
| 데이터 타입 | 형식 예 |
|---|---|
| DATE | ‘2021-12-01’ |
| TIME | ‘14:30:15’ |
| DATETIME | ‘2021-12-01 14:30:15’ |
| TIMESTAMP | ‘2021-12-01 14:30:15’ |
| YEAR | 2021 (4자리) 또는 21 (2자리) |
데이터베이스에 SQL 날짜 삽입이나 시간 값을 삽입하려면 일반적인 SQL 명령은 INSERT INTO 문을 포함하며, 값이 추가될 테이블 이름과 열을 모두 지정합니다. VALUES 키워드와 함께 필요한 날짜 및/또는 시간 데이터가 삽입됩니다.
SQL에서 날짜를 삽입하는 방법
SQL 데이터베이스에서 날짜는 일반적으로 표준화된 형식으로 저장됩니다. 이 섹션에서는 SQL 쿼리에서 날짜를 삽입하는 몇 가지 적절한 방법을 살펴봅니다. 이러한 관행에 집중함으로써 개발자는 애플리케이션이 원활하게 실행되고 데이터가 깔끔하게 정리된 상태를 유지할 수 있습니다.
SQL에서 날짜를 삽입하는 중요한 측면에는 날짜에 사용되는 데이터 타입을 이해하는 것이 포함됩니다. 가장 자주 사용되는 데이터 타입은 다음과 같습니다:
- DATE: 날짜만 저장 (시간 없음)
- TIME: 시간만 저장 (날짜 없음)
- DATETIME: 날짜와 시간 모두 저장
- TIMESTAMP: DATETIME과 유사하지만 시간대 지원이 있음
1. 날짜 직접 삽입하기
테이블에 날짜 값을 직접 삽입하려면 데이터베이스 관리 시스템에서 규정한 날짜 형식을 사용합니다:
INSERT INTO 테이블명 (날짜열) VALUES ('YYYY-MM-DD');
예를 들어,
INSERT INTO Orders (OrderDate) VALUES ('2021-06-15');
직접 해보기:
[[ testData.title ]]
appointments 테이블에 id = 4, patient_name = ‘Sarah Wilson’, appointment_date = ‘2024-08-20’인 새 행을 삽입하세요.
[[ col ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.your_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.expected_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ error ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ testData.solution ]]
사용 가능한 테이블
[[ table.name ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
2. CURRENT_DATE 또는 CURRENT_TIMESTAMP 함수 사용하기
이러한 함수는 현재 날짜 또는 타임스탬프를 테이블에 자동으로 삽입합니다:
INSERT INTO 테이블명 (날짜열) VALUES (CURRENT_DATE);
INSERT INTO 테이블명 (타임스탬프열) VALUES (CURRENT_TIMESTAMP);
SQLite에서는 date('now') 또는 datetime('now')를 사용할 수 있습니다:
INSERT INTO 테이블명 (날짜열) VALUES (date('now'));
INSERT INTO 테이블명 (Datetime열) VALUES (datetime('now'));
직접 해보기:
[[ testData.title ]]
activity_log 테이블에 id = 4, action = ‘system_check’, log_date를 CURRENT_DATE 키워드를 사용하여 ‘2024-08-03’으로 설정한 새 행을 삽입하세요 (이 테스트 환경에서는 ‘2024-08-03’과 동일합니다). 그런 다음 id로 정렬된 모든 행을 선택하세요.
[[ col ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.your_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.expected_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ error ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ testData.solution ]]
사용 가능한 테이블
[[ table.name ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
3. 데이터베이스 특정 함수 활용하기
SQL Server와 Oracle과 같은 데이터베이스에는 날짜를 삽입하는 데 사용할 수 있는 특정 함수가 있습니다. 몇 가지 예는 다음과 같습니다:
- SQL Server:
GETDATE()또는SYSDATETIME() - Oracle:
SYSDATE또는CURRENT_DATE - PostgreSQL:
NOW(),CURRENT_DATE, 또는CURRENT_TIME
-- SQL Server 예:
INSERT INTO 테이블명 (Datetime열) VALUES (SYSDATETIME());
-- Oracle 예:
INSERT INTO 테이블명 (날짜열) VALUES (SYSDATE);
4. 문자열을 날짜로 변환하기
때때로 개발자는 날짜 문자열을 데이터베이스에 삽입하기 전에 적절한 날짜 형식으로 변환해야 합니다. 데이터베이스 시스템은 일반적으로 CONVERT() 또는 TO_DATE()와 같은 함수를 제공하며 이를 사용할 수 있습니다:
-- SQL Server 예:
INSERT INTO 테이블명 (날짜열) VALUES (CONVERT(date, '2021/06/15', 111));
-- Oracle 예:
INSERT INTO 테이블명 (날짜열) VALUES (TO_DATE('15-JUN-2021', 'DD-MON-YYYY'));
NOW() 함수 사용하기
SQL 쿼리에 날짜를 통합하는 것은 처음에는 어려워 보일 수 있지만, NOW() 함수는 프로세스를 크게 단순화합니다. 이 함수는 사용자가 SQL 데이터베이스에 현재 날짜와 시간을 삽입하는 데 도움이 됩니다. NOW()를 사용하면 데이터베이스 레코드에 날짜를 쉽게 추가할 수 있습니다.
SQL 함수로서 NOW()는 현재 날짜와 시간을 반환하며, 일반적으로 YYYY-MM-DD HH:MM:SS로 형식화됩니다. 이 함수의 일반적인 용도는 특정 이벤트나 작업에 대한 타임스탬프를 기록하기 위해 SQL 날짜 삽입 명령이 필요할 때입니다. 데이터베이스에 현재 날짜와 시간을 삽입하기 위해 NOW()를 사용하는 구문은 간단합니다:
INSERT INTO 테이블명 (열1, 열2, 날짜열)
VALUES ('값1', '값2', NOW());
이 예에서 날짜와 시간은 날짜열에 삽입됩니다. 결과적으로 NOW() 함수를 사용하여 현재 날짜와 시간이 기록되고, 다른 값은 해당 열에 할당됩니다.
현재 날짜 또는 시간만 반환하도록 제어하려면 다음 함수를 사용할 수 있습니다:
-
CURDATE():
YYYY-MM-DD형식으로 현재 날짜를 반환합니다. -
CURTIME():
HH:MM:SS형식으로 현재 시간을 반환합니다.
DATETIME 값 삽입하기
날짜와 시간을 함께 저장해야 할 때는 DATETIME 또는 TIMESTAMP 데이터 타입을 사용합니다. 이것은 이벤트가 발생하는 정확한 순간을 추적하는 데 필수적입니다.
INSERT INTO events (event_name, event_datetime)
VALUES ('Conference Start', '2024-09-15 14:30:00');
직접 해보기:
[[ testData.title ]]
events 테이블에 id = 3, event_name = ‘Team Meeting’, event_datetime = ‘2024-09-15 14:30:00’인 새 행을 삽입하세요. 그런 다음 id로 정렬된 모든 행을 선택하세요.
[[ col ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.your_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.expected_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ error ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ testData.solution ]]
사용 가능한 테이블
[[ table.name ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
CURDATE() 및 CURTIME() 함수 활용하기
데이터베이스 처리에서 가장 필수적인 기술 중 하나는 날짜 값을 삽입하는 방법을 아는 것입니다. SQL에서 날짜 및 시간 값으로 작업하는 데 유용한 두 가지 함수는 CURDATE()와 CURTIME()입니다. 이 섹션에서는 데이터베이스에 날짜 값을 삽입할 때 이러한 함수를 활용하는 방법에 중점을 둡니다.
CURDATE() 함수를 사용하면 테이블에 현재 날짜를 삽입할 수 있습니다. 이 함수는 ‘YYYY-MM-DD’ 형식으로 현재 날짜를 반환하며 DATE 데이터 타입과 호환됩니다. sales라는 테이블에 현재 날짜를 삽입하기 위해 CURDATE()를 사용하는 예는 다음과 같습니다:
INSERT INTO sales (sale_date, product_id, quantity)
VALUES (CURDATE(), 1234, 10);
CURDATE() 함수가 날짜를 수동으로 입력하지 않고도 최신 상태를 유지하면서 건너뛸 수 있게 해주는 것에 주목하세요. 이는 상당한 시간을 절약하고 인적 오류의 위험을 줄일 수 있습니다.
반면에 CURTIME() 함수는 ‘HH:MM:SS’ 형식으로 현재 시간을 삽입하는 데 사용됩니다. CURDATE()와 마찬가지로 TIME 또는 DATETIME 데이터 타입에 적합한 현재 시간을 자동으로 기록하는 데 유용합니다.
CURDATE()와 CURTIME() 모두 다양한 상황에 맞는 변형이 있습니다. 간략한 개요는 다음과 같습니다:
-
CURRENT_DATE(): 현재 날짜도 반환하는CURDATE()의 대안. -
CURRENT_TIME():CURTIME()과 동등하며 현재 시간을 제공합니다. -
NOW()또는CURRENT_TIMESTAMP(): ‘YYYY-MM-DD HH:MM:SS’ 형식으로 날짜와 시간을 모두 반환하며 DATETIME 데이터 타입에 이상적입니다.
STR_TO_DATE()로 사용자 정의 날짜 형식 삽입하기
SQL에서 날짜 형식을 다루는 것은 약간 까다로울 수 있지만, 사용자 정의 날짜 형식을 삽입해야 할 때 STR_TO_DATE()가 도움이 됩니다. 이 강력한 함수를 사용하면 주어진 형식의 날짜를 해석하고 적절한 SQL 날짜 형식으로 저장할 수 있습니다.
MySQL과 같은 SQL 데이터베이스는 기본적으로 표준 ‘YYYY-MM-DD’ 형식을 사용하지만, ‘25 December 2021’과 같은 데이터가 있으면 어떻게 해야 할까요? STR_TO_DATE()를 사용하면 사용자 정의 형식의 날짜를 SQL 호환 형식으로 변환할 수 있습니다.
작동 방식은 다음과 같습니다:
- 먼저 날짜를 문자열 형식으로 지정합니다. 예:
'25 December 2021'. - 그런 다음 날짜 형식 지정자를 사용하여 원래 날짜의 형식을 정의합니다. 이 경우
%d %M %Y.
모든 것을 SQL INSERT 문에 넣으면:
INSERT INTO 샘플테이블 (날짜열) VALUES (STR_TO_DATE('25 December 2021', '%d %M %Y'));
중요한 형식 지정자에는 다음이 포함됩니다:
-
%d: 월의 일 (00-31) -
%m: 월, 숫자 (00-12) -
%M: 월, 약어 이름 (Jan, Feb, Mar 등) -
%Y: 연도, 세기 포함 (예: 2021) -
%y: 연도, 세기 없음 (2자리 형식, 예: 21) -
%H: 시간, 24시간 형식 (00-23) -
%i: 분 (00-59)
DATE_ADD()와 DATE_SUB()를 사용한 날짜 연산
날짜와 시간을 조작하는 것은 SQL 데이터베이스로 작업할 때 필수적인 기술입니다. DATE_ADD()와 DATE_SUB()는 날짜와 관련된 산술 연산을 수행하기 위한 두 가지 중요한 함수입니다. 이러한 함수를 통해 개발자는 계산된 값으로 날짜 및 시간 데이터를 삽입할 수 있습니다.
DATE_ADD() 함수를 사용하면 주어진 날짜에 특정 간격을 쉽게 추가할 수 있습니다. 마찬가지로 DATE_SUB() 함수는 지정된 간격을 빼도록 설계되었습니다. 두 함수의 구문은 다음과 같습니다:
DATE_ADD(날짜, INTERVAL 값 단위)
DATE_SUB(날짜, INTERVAL 값 단위)
SQLite에서는 수정자와 함께 date() 함수를 사용할 수 있습니다:
-- 날짜에 7일 추가
date('2024-01-01', '+7 days')
-- 날짜에서 1개월 빼기
date('2024-01-01', '-1 month')
직접 해보기:
[[ testData.title ]]
reminders 테이블에 id = 3, task = ‘Follow up’, remind_date를 ‘2024-10-01’부터 7일 후(‘2024-10-08’이 되어야 함)로 설정한 새 행을 삽입하세요. SQLite의 date 함수와 ‘+7 days’ 수정자를 사용하세요. 그런 다음 id로 정렬된 모든 행을 선택하세요.
[[ col ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.your_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ i18n.expected_results ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ error ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
[[ testData.solution ]]
사용 가능한 테이블
[[ table.name ]]
| [[ col ]] |
|---|
| [[ formatCell(cell) ]] |
CONVERT_TZ()로 시간대 관리하기
SQL에서 날짜 및 시간 데이터를 처리할 때 중요한 측면은 시간대 관리입니다. MySQL의 CONVERT_TZ() 함수는 이 문제를 해결하는 강력한 도구입니다. 날짜를 삽입하거나 여러 시간대의 데이터를 처리할 때 중요한 역할을 합니다.
CONVERT_TZ() 함수는 세 개의 인수를 사용합니다:
- 변환할 datetime 또는 timestamp 값.
- 원래 시간대 식별자.
- 대상 시간대 식별자.
SQL 날짜 삽입 작업에서 CONVERT_TZ() 함수를 사용하는 예는 다음과 같습니다:
INSERT INTO events (event_name, event_time)
VALUES ("Sample Event", CONVERT_TZ("2022-06-01 12:00:00", "UTC", "America/New_York"));
DEFAULTS와 CONSTRAINTS로 데이터 무결성 보장하기
SQL 날짜 삽입 작업을 수행할 때 DEFAULTS와 CONSTRAINTS를 사용하여 데이터 무결성을 보장하는 것이 중요합니다. 이러한 도구는 데이터베이스에서 일관되고 정확한 데이터를 유지하고, 원치 않는 데이터 입력 오류를 방지하며, 애플리케이션을 위한 신뢰할 수 있는 기반을 제공하는 데 도움이 됩니다.
날짜 필드에 DEFAULT 값을 설정하면 시간을 절약하고 사용자 입력 오류를 줄일 수 있습니다. DEFAULT는 스키마에서 설정할 수 있으며, INSERT 작업 중에 값이 제공되지 않으면 날짜 필드가 자동으로 채워집니다. 예를 들어 테이블을 생성할 때 DEFAULT는 다음과 같이 설정할 수 있습니다:
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE DEFAULT CURRENT_DATE
);
이 예에서 order_date 필드에 날짜가 제공되지 않으면 현재 날짜로 자동 채워집니다.
DEFAULT 외에도 CONSTRAINTS는 특정 조건을 적용하여 데이터 무결성을 보장하는 데 중요한 역할을 합니다:
- NOT NULL: 필드에 값이 포함되어야 하며 null 값 삽입을 방지합니다.
- CHECK: 입력된 값이 특정 조건을 충족하는지 확인합니다.
CREATE TABLE orders (
order_id INT NOT NULL,
customer_id INT NOT NULL,
order_date DATE CHECK (order_date > '2000-01-01')
);
Beekeeper Studio에서 날짜 작업하기
다양한 데이터베이스에서 날짜 삽입 작업을 할 때 강력한 SQL 편집기가 차이를 만듭니다. Beekeeper Studio는 날짜 관련 쿼리를 작성하고 테스트하는 데 탁월한 지원을 제공합니다.
날짜 처리에 도움이 되는 기능:
- 쿼리 자동 완성: 입력하는 동안 날짜 함수를 제안
- 다중 데이터베이스 지원: PostgreSQL, MySQL, SQLite, SQL Server 등에서 날짜 함수 사용
- 결과 형식 지정: 읽기 쉬운 형식으로 날짜 표시
- 쿼리 기록: 날짜 삽입 패턴 저장 및 재사용
무료 버전에는 SQL 날짜 작업을 마스터하는 데 필요한 모든 것이 포함되어 있어 학습과 프로덕션 데이터베이스 작업 모두에 완벽합니다.
마무리: SQL에서 날짜 삽입을 위한 모범 사례
SQL에서 날짜를 삽입할 때 따라야 할 몇 가지 모범 사례가 있습니다. 이렇게 하면 날짜 정보를 효과적으로 저장하고 관리하여 쿼리와 애플리케이션에서 원활하게 사용할 수 있습니다. 기억해야 할 몇 가지 핵심 측면은 다음과 같습니다:
-
날짜 데이터 타입: 테이블 열을 생성할 때 날짜 정보에 적합한 데이터 타입을 선택하세요. SQL은
DATE,TIME,TIMESTAMP와 같은 다양한 날짜 및 시간 데이터 타입을 제공합니다. 올바른 것을 선택하면 오류를 방지하고 쿼리 성능을 향상시킵니다. -
일관된 형식: SQL은 모든 날짜 값에서 날짜 형식의 일관성을 요구합니다. SQL에 입력하는 모든 날짜 값이 단일 형식을 따르는지 확인하세요. 표준 형식은
YYYY-MM-DD입니다. 이러한 일관성은 더 나은 보고 및 분석을 용이하게 합니다. -
내장 함수 사용: SQL은
GETDATE(),CURDATE(),CURRENT_TIMESTAMP와 같은 날짜 값으로 작업하기 위한 수많은 내장 함수를 제공합니다. 이러한 함수는 날짜 관련 정보를 삽입하거나 업데이트할 때 시간을 절약하고 SQL 코드를 간결하고 효율적으로 유지합니다. -
시간대 고려: 날짜 값으로 작업할 때 시간대 처리는 까다로울 수 있습니다. 국제 데이터로 작업할 때는 시간대 인식 함수 사용을 고려하세요.
-
매개변수 또는 변수: 애플리케이션이나 웹 프론트엔드를 통해 날짜 값을 삽입할 때 하드코딩된 값 대신 매개변수화된 쿼리 또는 변수를 사용하세요. 매개변수나 변수 사용은 잠재적인 SQL 인젝션 공격을 피하는 데 도움이 될 뿐만 아니라 코드 재사용성과 가독성을 높입니다.
SQL에서 날짜를 삽입하기 위한 이러한 모범 사례를 따르면 날짜 정보의 무결성과 사용성이 향상되어 궁극적으로 보고 및 분석 기능이 향상됩니다.
Beekeeper Studio는 무료 & 오픈 소스 데이터베이스 GUI입니다
제가 사용해 본 최고의 SQL 쿼리 & 편집기 도구입니다. 데이터베이스 관리에 필요한 모든 것을 제공합니다. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio는 빠르고 직관적이며 사용하기 쉽습니다. Beekeeper는 많은 데이터베이스를 지원하며 Windows, Mac, Linux에서 훌륭하게 작동합니다.
사용자들이 Beekeeper Studio에 대해 말하는 것
"Beekeeper Studio는 제 예전 SQL 워크플로를 완전히 대체했습니다. 빠르고 직관적이며 데이터베이스 작업을 다시 즐겁게 만들어 줍니다."
"많은 데이터베이스 GUI를 사용해 봤지만, Beekeeper는 기능과 단순함 사이의 완벽한 균형을 찾았습니다. 그냥 작동합니다."