날짜로 작업
날짜로 작업할 때 가장 어려운 부분은 삽입하려는 날짜 형식이 데이터베이스의 날짜 열 형식과 일치하는지 확인하는 것이다.
데이터에 날짜 부분만 포함되어 있으면 쿼리가 예상대로 작동한다.
그러나 시간 부분이 포함되면 더 복잡해진다.
날짜 데이터 유형
MySQL
데이터베이스에 날짜 또는 날짜/시간 값을 저장하기 위한 다음 데이터 유형과 함께 제공된다.
- DATE- YYYY-MM-DD 형식
- DATETIME- 형식: YYYY-MM-DD HH:MI:SS
- TIMESTAMP- 형식: YYYY-MM-DD HH:MI:SS
- YEAR- YYYY 또는 YY 형식
SQL Server
데이터베이스에 날짜 또는 날짜/시간 값을 저장하기 위한 다음 데이터 형식과 함께 제공된다.
- DATE- YYYY-MM-DD 형식
- DATETIME- 형식: YYYY-MM-DD HH:MI:SS
- SMALLDATETIME- 형식: YYYY-MM-DD HH:MI:SS
- TIMESTAMP- 형식: 고유 번호
⭐ 데이터베이스에 새 테이블을 생성할 때 열에 날짜 유형이 선택된다.
데이터베이스 예시
첫번째 주문 테이블
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
OrderDate가 “2008-11-11″인 레코드를 선택
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
기본 예시
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
두번째 주문 테이블
“OrderDate” 열에 시간 구성요소를 추가했다.
주문 아이디 | 상품명 | 주문 날짜 |
---|---|---|
1 | 게이토스트 | 2008-11-11 13:23:44 |
2 | 카망베르 피에로 | 2008-11-09 15:45:21 |
삼 | 모짜렐라 디 조반니 | 2008-11-11 11:12:01 |
4 | 마스카포네 파비올리 | 2008-10-29 14:56:59 |
첫번째 주문 테이블때와 같은 SQL 코드 사용할 때
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
우리는 결과를 얻지 못한다.
쿼리가 시간 부분이 없는 날짜만 찾고 있기 때문이다.
⭐ 쿼리를 간단하고 쉽게 유지 관리하려면 꼭 필요한 경우가 아니면 날짜에 시간 구성 요소를 사용하지 말아야한다.
참고
W3C School - SQL Working With Dates
W3C School - SQL Tutorial