글쎄 SQL에 테이블이 있고 날짜가 포함 된 날짜 열이 있고 윤년에 잘못된 날짜를 찾아야합니다. 비 유효 기간 인 2 월 31 일 또는 2 월 29 일의 날짜가 올바르지 않습니다.윤년에 유효하지 않은 날짜를 찾는 방법
간단한 쿼리를 사용하면 도움이됩니다.
글쎄 SQL에 테이블이 있고 날짜가 포함 된 날짜 열이 있고 윤년에 잘못된 날짜를 찾아야합니다. 비 유효 기간 인 2 월 31 일 또는 2 월 29 일의 날짜가 올바르지 않습니다.윤년에 유효하지 않은 날짜를 찾는 방법
간단한 쿼리를 사용하면 도움이됩니다.
SQL Server의 ISDATE 기능을 사용할 수 있습니다. 를 참조하십시오 : ISDATE (Transact-SQL), Validate DateTime String in SQL Server 2005
샘플 :
SELECT dt, ISDATE(dt) ValidDate
FROM(
SELECT '31-Feb-2012' AS dt UNION
SELECT '31-Jan-2012' AS dt
)x
ISDATE
반환 한 표현이 유효한 날짜, 시간, 또는 날짜 값 인 경우;
SELECT
date_of_birth,
ISDATE(date_of_birth) ValidDate
FROM
YourTable
죄송합니다. 더 자세히 설명해 주시겠습니까? –
ISDATE는 표현식이 유효한 날짜, 시간 또는 날짜 시간 값이면 1을 반환하고, 그렇지 않으면 '31 -Feb-2012 '는 유효하지 않은 날짜이므로 0을 반환합니다. – TechDo
그리고 date_of_birth 열을 어떻게 삽입합니까? 실제로 인스턴트 메신저 새 –
EDIT - DBMS에 대해서는 언급하지 않았지만 태그는 Ms-sql을 지정합니다.
당신은 MySQL
에서 그것을하고 싶은 경우 :
mysql> SELECT DATE_ADD('2012-02-29', INTERVAL 0 DAY);
+----------------------------------------+
| DATE_ADD('2012-02-29', INTERVAL 0 DAY) |
+----------------------------------------+
| 2012-02-29 |
+----------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('2011-02-29', INTERVAL 0 DAY);
+----------------------------------------+
| DATE_ADD('2011-02-29', INTERVAL 0 DAY) |
+----------------------------------------+
| NULL |
+----------------------------------------+
1 row in set, 1 warning (0.00 sec)
, DATE_ADD
는 NULL을 반환합니다. 다른 더 좋은 방법이있을 수 있습니다.
그것은 "sql-server"라는 태그가 붙어 있으며 처음부터 ... –
맞아요,하지만 질문에 대해서도 언급 할 수 있습니다. 모든 사람들이 응답하기 전에 태그를 살펴 보지 않을 것이라고 생각합니다. – Swapnil
윤년이에 의해 결정될 수있다 : 그렇지 않으면 0
는당신은 사용하여 기존 테이블 데이터를 확인하실 수 있습니다
if year modulo 400 is 0 then
is_leap_year
else if year modulo 100 is 0 then
not_leap_year
else if year modulo 4 is 0 then
is_leap_year
else
not_leap_year
당신은 날짜 열이 있고 그 유형은'인 경우 datetime' 다음에는 유효하지 않은 날짜가있을 수 없습니다. 삽입되기 전에 유효성이 검사됩니다. 다른 현명한 날짜 형식을 사용하십시오. –
예 datetime입니다. 그래서 나는 이미 올바른 데이터를 가지고 있다는 것을 의미합니까? –