날짜가 문자 형식으로되어있는 테이블이 있습니다. 날짜 형식을 확인하고 싶습니다. DB2에서이 작업을 어떻게 수행 할 수 있는지 알려주십시오. ISDATE 함수가 있지만 DB2에서는 작동하지 않는다는 것을 알고 있습니다. 내가 날짜 기지로 DB2를 사용 AS400 오전 .. 실제로DB2에 해당하는 ISDATE
답변
을 저를 도와주세요, 그것은 AS/400 용 DB2처럼 보이는 수도 나는 V6R1 참조에서 아무것도 찾을 수 없습니다합니다 (ISDATE()
기능을 가지고 있지 - 흥미롭게도 LUW 참조). 그래서 당신의 문제는 그 기능이 존재하지 않는 것처럼 보입니다.
물론 문제의 근본 원인은 유효하지 않은 날짜를 변환하려고하면 명령문이 중단됩니다. 그 점을 감안할 때이 문은 형식화가 가능하면 날짜를, 그렇지 않은 경우 null을 제공해야합니다. 미국 및 EUR 형식/주문을 혼합 한 경우 일 수도 있고이 아니고은 데이터를 올바르게 복구 할 수 있습니다 (구분 기호가 다르면 기본값으로 생각할 수 있습니다. 괜찮습니다).). 이 속으로
String Dates
=============
2011-09-22
22.09.2011
09/22/2011
a111x90x00 -- And who knows what this is...
:
WITH date_format(strDate, format) as (
SELECT strDate,
CASE
WHEN strDate LIKE('____-__-__') THEN 'ISO'
WHEN strDate LIKE('__.__.____') THEN 'EUR'
WHEN strDate LIKE('__/__/____') THEN 'USA'
ELSE NULL END
FROM dataTable
)
SELECT
strDate,
format,
CASE
WHEN format IS NOT NULL THEN DATE(strDate)
ELSE NULL
END AS realDate
FROM date_format
이이처럼 보이는 데이터 테이블을 회전
Results:
strDate format realDate
============================
2011-09-22 ISO 2011-09-22
22.09.2011 EUR 2011-09-22
09/22/2011 USA 2011-09-22
a111x90x00 - -
이 예는 자동 번역의 기본 형식을 사용하여 물론이다. 다른 것이 있으면 수동으로 변환해야합니다 (형식을 반환하는 대신 ISO로 변환 한 다음 캐스트 할 수 있습니다).
이것을 UDF로 만들면 다른 '문자 날짜'열에서 더 쉽게 사용할 수 있습니다. –
Clockwork-Muse 응답은 날짜를 확인하는 데 사용할 수있는 답변보다 짧습니다. 테스트를 통해 '2016-02-30'또는 '2016-04-31'과 같이 잘못된 날짜가 표시되면 오류가 발생합니다.논리는 단순히 DATE() 변환을 시도하기 위해 CASE 문에 표시하기에 충분하지 않은 형식을 검사합니다. 위의 답변에 대한 귀하의 고려 사항은 특정 날짜 형식 (형식 및 값)으로 화면에 표시하려고 시도하는 것과 달리 특정 방식으로 서식이 지정된 데이터를 화면에 표시하려는 욕망에 따라 달라집니다. – geolemon
대체 답변은 http://stackoverflow.com/questions/37055675/validate-dates-before-conversion-aka-isdate-equivalent에서 논의되고 있습니다. – Stavr00
" 날짜 형식을 확인하십시오"의도하지 않거나 기존 ISDATE() 효과가 무엇인지 알지 못하지만 그 이름이 암시하는 내용이 충분히 명확하게 보입니다. 고려 :
v5r3 [즉, 오직 그 두 가지를 보장하기 위해 나쁜 날짜 문자열 문자열 예제 값과 일부 가비지 텍스트 입력이 실제로 NULL을 반환했으며 실제로 각각 NULL이 반환되었고 유효한 값이있는 날짜 형식이 표준 날짜 형식으로 반환되었습니다. DATE에 캐스트 될 수있는 값으로 최대 10 자의 문자열 변경을 평가하는 입력; 입력 값을 날짜로 변환 할 수없는 경우 결과는 NULL입니다. 물론 처음에는 NULL 값이 유효하지 않은 날짜 문자열에 대해 생성 된 결과와 직접 구별되지 않는다는 것을 의미합니다.
그 대신 결과로 TRUE
또는 FALSE
과 같은 원하는 표시기가 필요한 경우 사용자 정의 함수 (UDF)의 사용을 CASE 식으로 코딩 할 수 있습니다. 예컨대 : ISDATE 이후 CASE WHEN ISDATE(myVCcol) IS NULL THEN 'FALSE' ELSE 'TRUE' END
DROP FUNCTION ISDATE
;
CREATE FUNCTION ISDATE
(InpDateStr VARCHAR(10)
) RETURNS DATE
LANGUAGE SQL
DETERMINISTIC
RETURNS NULL ON NULL INPUT
SET OPTION DBGVIEW = *SOURCE , DATFMT = *ISO
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN NULL ;
RETURN DATE(InpDateStr) ;
END
;
- 1. ISDATE
- 2. DB2에 오라클 테이블 복사하기
- 3. Python에서 DB2에 연결
- 4. pyodbc.Error 'IM002'DB2에 연결
- 5. cfif isdate (URL.day) 문제 - 항상 cfelse를 호출합니까?
- 6. DB2에 대한 ODBC 연결이 끊어졌습니다.
- 7. db2에 0이있는 패드 varchar 숫자
- 8. ODBC를 통한 DB2에 대한 무료 액세스
- 9. PureQuery없이 DB2에 대해 정적 SQL 쿼리 수행
- 10. DB2에 대한 Varchar (Max)는 무엇입니까?
- 11. Struts, Spring 및 Hibernate를 사용하여 DB2에 연결
- 12. SQL 2008 Express가 설치된 AS400/DB2에 액세스
- 13. IsDate (날짜)를 false로 되돌릴 수있는 방법이 있습니까?
- 14. AS400 DB2 SQL 구문에서 Oracle의 to_char에 해당하는 것은 무엇입니까?
- 15. 웹 응용 프로그램에서 DB2에 연결이 끊어진 연결을 수정하려면 어떻게합니까?
- 16. AS400/DB2에 연결할 때 .NET에서 OLEDB 매개 변수 사용
- 17. JBoss Application Server에서 DB2에 연결하는 중 오류가 발생했습니다.
- 18. SQL Server 2005에서 DB2에 4 부분 이름 지정을 사용하여 삽입합니까?
- 19. CSV 파일을 가져올 수있는 DB2에 액세스 할 수있는 무료 클라이언트
- 20. ASP.net 사이트가 DB2에 대한 SQL Server Transistion을 디자인/구축했습니다
- 21. DataContracts에 해당하는 XmlTextAttribute
- 22. ltrace에 해당하는 ltrace?
- 23. EDQUOT에 해당하는 Windows가 있습니까?
- 24. WPF의 IsHitTestVisible에 해당하는 WinForms
- 25. 코코아에 해당하는 HIViewSetZOrder
- 26. Ruby에 해당하는 Python setattr()
- 27. JDBC에서 DB.Null에 해당하는 내용
- 28. 이 Makefile에 해당하는 Windows
- 29. -webkit-gradient에 해당하는 모질라
- 30. Java 자원에 해당하는 C#
()는 SQL 함수, DB2도 어떤 SQL DBMS의 일부가 될 수 없습니다 예상해야되지 않습니다. MS SQL Server 용 T-SQL 함수입니다. _ (오라클도 OLAP에 ISDATE 프로그램을 가지고 있습니다. Sybase와 같은 다른 DBMS에는 유사한 기능이있을 수 있습니다.) 좋은 답변을 제공하려면 사용 방법, 특히 무엇을 원하고 있는지 알아야합니다 유효하지 않은 날짜 값. – user2338816