Slik løser du konvertering mislyktes når du konverterer dato og / eller tid fra tegnstreng & rsquo; Feil?

Det er mange tilfeller når datoer og klokkeslett ikke vises i det formatet du vil at det skal være, og heller ikke en spørreutdata passer til seernes behov. Det er flere innebygde funksjoner for SQL Server for å formatere datostrengen etter ditt behov, men for strengen skal tolkes av SQL Server og for å unngå konverteringsfeil, bør den være i riktig format. Når vi prøver å konvertere dato eller klokkeslett fra tegnstreng, oppstår følgende feil noen ganger. "Konvertering mislyktes når du konverterte dato og / eller tid fra tegnstreng."

feil for konvertering av dato

Feilen som er nevnt ovenfor oppstår normalt når bokstavsdato ikke er riktig og ikke kan konverteres fra strengen til DateTime eller date. Denne feilen skyldes flere årsaker, som vi vil diskutere i detalj sammen med løsningssettet.

Eksempel 1:

Storbritannia Dato- og klokkeslettnotering viser datoen ved bruk av formatet dag-måned-år (10. januar 2015 eller 10/1/2015) som vi kan oppnå ved hjelp av SQL Server innebygd funksjon "konvertere" med formateringsstil 103.

Her i eksemplet nedenfor kan vi se at den angitte datostrengen er i feil format. For det første gir den måned, så dager og i fjor som er galt og ikke kan tolkes av SQL Server, noe som resulterer i en feil. Riktig format for konvertering av britisk stildato med “103” dato stil er “dd / mm / åååå”.

Feil format:

Erklære @date_time_value varchar (100) = '10 / 16/2015 21:02:04 'velg CONVERT (datetime2, @date_time_value, 103) som UK_Date_Time_Style

Riktig format:

Det britiske og franske datoformatet er 103 = "dd / mm / åååå" eller 3 = "dd / mm / åå". Her er 103 og 3 datostiler.

Deklarer @date_time_value varchar (100) = '10 / 1/15 21:02:04 'velg CONVERT (datetime2, @date_time_value, 103) som Date_Time_Style
Erklær @date_time_value varchar (100) = '10 / 1/15 21:02:04 'velg CONVERT (datetime2, @date_time_value, 3) som UK_Date_Time_Style

Eksempel 2:

Noen ganger resulterer streng-til-dato-konvertering i SQL-server i feil, ikke på grunn av dato- eller tidsformatene som brukes, snarere er det fordi du prøver å lagre feil informasjon som ikke er akseptabel for ordningen.

Feil dato:

Årsaken til følgende feil er bare at det i 2019 ikke er noen dato som “29. februar” fordi det ikke er et skuddår.

Deklarer @date_time_value varchar (100) = '2019-02-29 21:02:04' velg rollebesetning (@date_time_value som datetime2) som date_time_value

Riktig en:

Deklarer @date_time_value varchar (100) = '2019-02-28 21:02:04' velg rollebesetning (@date_time_value som datetime2) som date_time_value

ISO 8601 Datoformat:

Selv om mange formater er tilgjengelige for å manipulere datoverdier, kan det være et brukervennlig problem å velge en datetime-representasjon når du jobber for en global / internasjonal masse. Så kulturspesifikke dato- / klokkeslettbokstaver bør unngås. Hvis vi betrakter denne datoen som “03.08.2018”, vil den tolkes på følgende måter i forskjellige regioner i verden.

  • I britisk stil tolkes det som "8. mars 2018"
  • I europeisk stil tolkes det som "3. august 2018"

Heldigvis er det ett alternativ i det internasjonale datoformatet utviklet av ISO. Den globale standarden ISO 8601-format “ÅÅÅÅ-MM-DDThh: mm: ss” er et mer språkuavhengig alternativ for strengbokstaver og den adresserer alle disse problemene. Mens "åååå" er året, er "mm" måned og "dd" er dag. Så datoen “8. mars 2018” i internasjonalt ISO-format er skrevet som “2018-03-08”. Dermed er ISO-format det beste valget for datorepresentasjon.

Deklarer @date_time_value varchar (100) = '2019-03-28 21:02:04' velg convert (datetime2, @ date_time_value, 126) som [åååå-mm-ddThh: mi: ss.mmm]

Anbefalinger:

Forhåpentligvis vil denne artikkelen være med på å lindre forvirringen jeg ofte har sett i samfunnet om verdier for dato / tid. Det anbefales imidlertid at du aldri lagrer datoer i teksttype (varchar, char, nvarchar, nchar eller text) .Lag ​​alltid datoverdien i kolonnene DATE, DATETIME og helst DATETIME2 (gir mer presisjon), og la datoinformasjonsformateringen til brukergrensesnittlaget i stedet for å bli hentet fra databasen.

Anbefalt

Fix: Minecraft svarer ikke
Hva er Digital TV Tuner Device Application Application og bør det fjernes?
Hva er FileRepMalware og bør du fjerne det