SQL Date 함수
SQL 날짜
날짜를 처리할 때, 가장 어려운 작업은 입력된 날짜의 형식이 데이터베이스에서 날짜 열의 형식과 일치하는지 보장하는 것입니다.
데이터가 포함하는 것이 날짜 부분만이면 쿼리가 문제 없이 실행됩니다. 하지만 시간이涉及到면 상황이 좀 복잡해집니다.
날짜 쿼리의 복잡성에 대해 논의하기 전에, 가장 중요한 내장 날짜 처리 함수를 살펴보겠습니다。
MySQL Date 함수
아래 표는 MySQL에서 가장 중요한 내장 날짜 함수를 나열합니다:
함수 | 설명 |
---|---|
NOW() | 현재 날짜와 시간을 반환 |
CURDATE() | 현재 날짜를 반환 |
CURTIME() | 현재 시간을 반환 |
DATE() | 날짜나 날짜/시간 표현식의 날짜 부분을 추출합니다 |
EXTRACT() | 날짜/시간을 기준으로 단일 부분을 반환 |
DATE_ADD() | 날짜에 지정된 시간 간격을 추가합니다 |
DATE_SUB() | 날짜에서 지정된 시간 간격을 뺍니다 |
DATEDIFF() | 두 날짜 사이의 일수를 반환 |
DATE_FORMAT() | 날짜/시간을 다른 형식으로 표시 |
SQL Server Date 함수
아래 표는 SQL Server에서 가장 중요한 내장 날짜 함수를 나열합니다:
함수 | 설명 |
---|---|
GETDATE() | 현재 날짜와 시간을 반환 |
DATEPART() | 날짜/시간의 단일 부분을 반환 |
DATEADD() | 날짜에 지정된 시간 간격을 추가하거나 뺍니다 |
DATEDIFF() | 두 날짜 사이의 시간을 반환 |
CONVERT() | 날짜/시간을 다른 형식으로 표시 |
SQL Date 데이터 타입
MySQL는 데이터베이스에서 날짜나 날짜/시간 값을 저장하기 위해 다음 데이터 타입을 사용합니다:
- DATE - 형식 YYYY-MM-DD
- DATETIME - 형식: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 형식: YYYY-MM-DD HH:MM:SS
- YEAR - 형식 YYYY 또는 YY
SQL Server는 데이터베이스에서 날짜나 날짜/시간 값을 저장하기 위해 다음 데이터 타입을 사용합니다:
- DATE - 형식 YYYY-MM-DD
- DATETIME - 형식: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 형식: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 형식: 유일한 숫자
SQL 날짜 처리
시간 부분이 포함되지 않으면 두 날짜를 쉽게 비교할 수 있습니다!
아래와 같은 "Orders" 테이블이 있습니다:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
지금, "2008-12-26"인 OrderDate를 가진 레코드를 테이블에서 선택하고자 합니다.
다음 SELECT 문을 사용합니다:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
결과 집합:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
이제 "Orders" 클래스가 다음과 같은 것이라고 가정해 보겠습니다. ("OrderDate" 열의 시간 부분에 주의하세요):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
위의 SELECT 문을 사용하면:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
그렇다면 결과를 얻을 수 없습니다. 이는 쿼리에 시간 부분이 포함되지 않기 때문입니다.
추가로:날짜에서 시간 부분을 사용하지 않으면 쿼리를 간단하고 유지보수하기 쉽게 하고 싶다면!