블로그 이미지
정홍주
Azure에 대한 내용뿐만 아니라 새로운 트렌드로 빅데이터, BI, SharePoint, 앱 등의 내용을 다룹니다.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

'SQL Server Zero Day'에 해당되는 글 1

  1. 2011.02.14 SQL Server 시작일 default value
2011.02.14 08:30 SQL/T-SQL


커뮤니티의 게시판에 Excel에서는 날짜를 정수로 변경하면 SQL Server에서 변환한 값과 2일의 차이가 난다는 내용이 올라와서 이리저리 찾아서 정리합니다.

예전 Lotus 1-2-3에서는 시작일을 1899-12-31로 잡고 있습니다. 호환성 때문에 Excel 0 일을 1899-12-31로 계산하고 있습니다. 1900-01-01Excel에서 정수로 변경하면 1 이 나오는 것을 알 수 있습니다.

또한 1900-02-29 Excel에서는 존재합니다.

하지만 날짜를 비교하거나 할 경우 SQL Server에서는 시작일을 1900-01-01 로 처리하고 있습니다. 이른바 0 일이 되는 거죠. 1900-02-29T-SQL에서 변환하면 에러가 발생합니다.

SELECT CONVERT(DATETIME,'1900-02-29')

 

메시지242, 수준16, 상태3, 1

varchar 데이터형식을datetime 데이터형식으로변환하는중값범위를벗어났습니다.

하여간 여러 가지 내용으로 인해 2일의 차이가 발생하게 됩니다.

SELECT
DATEDIFF(dd, '1900-01-01 12:00:00 AM','2011-02-14 12:00:00 AM')

-- 결과 40586

-- Excel 결과 40588



흠...,

신고
posted by 정홍주
prev 1 next