Kako popraviti & lsquo; pretvorbo ni uspelo pri pretvorbi datuma in / ali časa iz znakovnega niza & rsquo; Napaka?

Veliko je primerov, ko se datumi in časi ne prikažejo v želeni obliki, niti izhodna poizvedba ne ustreza potrebam gledalcev. Obstaja več vgrajenih funkcij SQL Serverja, ki oblikujejo datumski niz glede na vaše potrebe, vendar mora SQL Server interpretirati niz in preprečiti napake pretvorbe v ustrezni obliki. Ko poskušamo datum ali uro pretvoriti iz znakovnega niza, se včasih pojavi naslednja napaka. "Pretvorba ni uspela pri pretvorbi datuma in / ali časa iz znakovnega niza."

napaka pretvorbe datuma in časa

Zgoraj navedena napaka se ponavadi pojavi, če dobesedna črka datuma ni pravilna in je ni mogoče pretvoriti iz niza v DateTime ali date. Ta napaka je posledica številnih razlogov, o katerih bomo podrobno razpravljali skupaj z naborom rešitev.

Primer 1:

Združeno kraljestvo Zapis datuma in časa prikazuje datum v obliki dan-mesec-leto (10. januar 2015 ali 10.1.2015), kar lahko dosežemo s funkcijo »pretvorba« funkcije SQL pretvorbe SQL Server s slogom oblikovanja 103.

Tu v spodnjem primeru lahko vidimo, da je naveden datumski niz v napačni obliki. Najprej zagotavlja mesec, nato dni in zadnje leto, kar je napačno in ga SQL Server ne more razlagati, kar povzroči napako. Pravilna oblika pretvorbe datuma v slogu Združenega kraljestva z uporabo sloga datuma »103« je »dd / mm / llll«.

Napačen format:

Razglasite @date_time_value varchar (100) = '10 / 16/2015 21:02:04 'izberite CONVERT (datetime2, @date_time_value, 103) kot UK_Date_Time_Style

Pravilna oblika:

Britanska in francoska oblika datuma je 103 = "dd / mm / llll" ali 3 = "dd / mm / llll". Tu sta 103 in 3 sloga datumov.

Navedite @date_time_value varchar (100) = '10 / 1/15 21:02:04 'izberite CONVERT (datetime2, @date_time_value, 103) kot Date_Time_Style
Navedite @date_time_value varchar (100) = '10 / 1/15 21:02:04 'izberite CONVERT (datetime2, @date_time_value, 3) kot UK_Date_Time_Style

2. primer:

Včasih pretvorba niza v datum v strežniku SQL povzroči napako, ne zaradi uporabljenih formatov datuma ali časa, temveč zato, ker poskušate shraniti napačne informacije, ki za shemo niso sprejemljive.

Napačen datum:

Razlog za naslednjo napako je zgolj v tem, da v letu 2019 ni datuma, kot je »29. februar«, ker ni prestopno leto.

Označi @date_time_value varchar (100) = '2019-02-29 21:02:04' izberite oddajo (@date_time_value kot datetime2) kot date_time_value

Pravilno:

Označi @date_time_value varchar (100) = '2019-02-28 21:02:04' izberite cast (@date_time_value kot datetime2) kot date_time_value

Oblika datuma ISO 8601:

Čeprav so na voljo številni formati za manipulacijo z datumskimi vrednostmi, je pri izbiri predstavitve datuma in časa lahko težava pri uporabi globalne / mednarodne mase. Zato se je treba izogibati literarnim datumom in času, značilnim za kulturo. Če ta datum upoštevamo kot “08.08.2018”, ga bomo v različnih regijah sveta razlagali na različne načine.

  • V britanskem slogu se tolmači kot »8. marec 2018«
  • V evropskem slogu se tolmači kot »3. avgust 2018«

Na srečo obstaja ena alternativa v mednarodni obliki zapisa datuma, ki jo je razvil ISO. Globalni standardni format ISO 8601 »LLLL-MM-DDThh: mm: ss« je za jezikovne nikele bolj neodvisna možnost in obravnava vsa ta vprašanja. Medtem ko je "llll" leto, "mm" je mesec, "dd" pa dan. Torej je datum »8. marec 2018« v mednarodnem formatu ISO zapisan kot »2018-03-08«. Tako je format ISO najboljša izbira za predstavitev datuma.

Označi @date_time_value varchar (100) = '2019-03-28 21:02:04' izberite pretvori (datetime2, @ date_time_value, 126) kot [llll-mm-ddThh: mi: ss.mmm]

Priporočila:

Upam, da bo ta članek pomagal razbremeniti zmedo, ki sem jo pogosto videl v skupnosti glede vrednosti datuma / časa. Priporočljivo je, da datumov nikoli ne shranjujte v besedilnem tipu (varchar, char, nvarchar, nchar ali besedilo). Vedno shranite datumsko vrednost v stolpce DATE, DATETIME in po možnosti DATETIME2 (zagotavlja večjo natančnost) in pustite oblikovanje podatkov o datumu. na plast uporabniškega vmesnika, namesto da bi ga pridobili iz baze podatkov.

Priporočena

Popravek: Minecraft se ne odziva
Kaj je aplikacija za registracijo naprave za digitalni TV sprejemnik in jo je treba odstraniti?
Kaj je FileRepMalware in ali ga morate odstraniti