acest lucru m-a derutat de câteva zile și caut ajutor. Folosesc SQL Server 2017.
Încerc să gestionez șirurile dintr-un câmp de format liber și fie să le convertesc într-o dată în formatul „zz/ll/aaaa” sau dacă nu sunt în acest format, afișează pur și simplu textul text.
Am nevoie de asta într-un VIEW, așa că nu pot folosi SET LANGUAGE. Sună simplu de utilizare convertit și isdata dar nu pare să funcționeze.
Deci, pentru fragmentul de cod de mai jos (amintiți-vă că acesta va fi într-o VIEW) vreau să citesc textul și dacă șirul se convertește într-o dată (de ex.este în formatul „zz/ll/aaaa”, apoi executați conversia la o dată, deoarece am nevoie de ea în format de dată pentru ca Excel să o ridice (prin intermediul bazei de date Connect SQL Server)), iar dacă nu se convertește la o dată, atunci afișați textul așa cum este.
creați tabelul dataTest1
( idx int,
dateStringTest varchar(15)
);
inserați în dateTest1 (idx, dateStringTest)
valori (1, '13/01/2021'), (2, 'nu');
Selectați
cazul când isdate(convert(datetime, dateStringTest, 103)) = 1
apoi convertiți(datetime, dateStringTest, 103)
else dateStringTest
termina ca dtres
de la dataTest1
--unde idx = 1
-- eroare: Msg 241, Level 16, State 1, Line 15 Conversia a eșuat la conversia datei și/sau a orei din șirul de caractere.
-- această eroare se întâmplă pentru idx = 2. Idx = 1 funcționează ok
Orice ajutor cu acest lucru ar fi foarte apreciat, deoarece îmi face capul.
Mulțumesc anticipat
Paul