
이것은 며칠 동안 나를 정말 당황하게 만들었고 도움을 구하고 있습니다. SQL Server 2017을 사용하고 있습니다.
자유 형식 필드의 문자열을 처리하고 "dd/mm/yyyy" 형식의 날짜로 변환하거나 이 형식이 아닌 경우 텍스트를 그대로 표시하려고 합니다.
VIEW에 이것이 필요하므로 SET LANGUAGE를 사용할 수 없습니다. 사용하면 간단해 보이지만전환하다그리고날짜하지만 작동하지 않는 것 같습니다.
따라서 아래 코드 조각의 경우(이것은 VIEW에 있음을 기억하세요) 텍스트를 읽고 문자열이 날짜로 변환되면(예: "dd/mm/yyyy" 형식인 경우) 다음으로 변환을 실행합니다. Excel에서 (Connect SQL Sever 데이터베이스를 통해) 선택하기 위해 필요한 날짜 형식으로 날짜를 입력하고, 날짜로 변환되지 않으면 텍스트를 그대로 표시합니다.
create table dateTest1
( idx int,
dateStringTest varchar(15)
);
insert into dateTest1 (idx, dateStringTest)
values (1, '13/01/2021'), (2, 'no');
select
case when isdate(convert(datetime, dateStringTest, 103)) = 1
then convert(datetime, dateStringTest, 103)
else dateStringTest
end as dtres
from dateTest1
--where idx = 1
-- error: Msg 241, Level 16, State 1, Line 15 Conversion failed when converting date and/or time from character string.
-- this error happens for idx = 2. Idx = 1 works ok
이 문제에 대한 도움이 있으면 크게 감사하겠습니다.
미리 감사드립니다 폴
답변1
귀하의 데이터베이스가 이 작업을 수행하는 데 얼마나 적합한지 잘 모르겠습니다. SQL Server의 데이터 변환 기능은 다른 기능에 비해 약간 "서투르다".
그러나 데이터베이스의 관점에서 보면 다음과 같습니다.
뭔가 있다면추정된될날짜, 그러면 그것해야한다날짜.
"누락"(즉, null 가능)할 수 있지만 다른 것은 될 수 없습니다.
그 경우~이었다다른 것이면 치료하면 안 됩니다.~처럼ㅏ날짜.
사용자는 입장할 수 없습니다날짜- 오직캐릭터 표현그들의.
응용 프로그램에서 [숫자 및] 날짜를 표시하려면 "방법"에 형식을 지정해야 합니다.
응용 프로그램에서 [숫자 및] 날짜를 읽으려면 "입력" 시 반대의 "형식 해제"(물론 유효성 검사)가 필요합니다.
데이터는언제나에 저장되다옳은데이터 유형 - "올바른 작업을 위한 올바른 도구".
자유 텍스트 구문 분석은아마응용 프로그램에서 가장 잘 수행되는 작업은 날짜 값을 추출하고 유효성을 검사하고 "형식을 취소"한 다음 저장하는 것입니다.