Како исправити грешку „Претворба није успела приликом конверзије датума и / или времена из низа знакова“?



Испробајте Наш Инструмент За Елиминисање Проблема

Много је случајева када се датуми и времена не појављују у формату какав желите, нити излазни упит одговара потребама гледалаца. Постоји неколико уграђених функција СКЛ Сервера за форматирање низа датума према вашим потребама, али да би СКЛ Сервер интерпретирао низ и да би избегао грешке конверзије, требало би да буде у одговарајућем формату. Када покушавамо да претворимо датум или време из низа знакова, понекад се појави следећа грешка. „Конверзија није успела приликом претварања датума и / или времена из низа знакова.“



грешка конверзије датума и времена

Слика 1: Грешка конверзије датума и / или времена из низа знакова



Горе наведена грешка обично се јавља када литерал датума није исправан и не може се претворити из низа у ДатеТиме или дате. Ова грешка настаје из више разлога, о којима ћемо детаљно разговарати заједно са скупом решења.



Пример 1:

Уједињено Краљевство Ознаке датума и времена приказују датум у формату дан-месец-година (10. јануара 2015. или 10.1.2015.), Што можемо постићи употребом функције „претвори“ функције СКЛ-а „претвори“ у СКЛ Сервер са стилом форматирања 103.

Овде у примеру испод можемо видети да је наведени датумски низ у погрешном формату. Прво, пружа месец, затим дане и прошлу годину, што је погрешно и СКЛ Сервер не може да их протумачи што резултира грешком. Исправан формат за претворбу датума у ​​британском стилу користећи стил датума „103“ је „дд / мм / ииии“.

Погрешан формат:

Прогласите @дате_тиме_валуе варцхар (100) = '10 / 16/2015 21:02:04 'изаберите ЦОНВЕРТ (датетиме2, @дате_тиме_валуе, 103) као УК_Дате_Тиме_Стиле

Слика 2: Погрешан формат датума који резултира грешком



Тачан формат:

Британски и француски формат датума је 103 = „дд / мм / ииии“ или 3 = „дд / мм / ииии“. Овде су 103 и 3 стилови датума.

Прогласите @дате_тиме_валуе варцхар (100) = '10 / 1/15 21:02:04 'изаберите ЦОНВЕРТ (датетиме2, @дате_тиме_валуе, 103) као Дате_Тиме_Стиле

Слика 3: Тачан формат датума са „дд / мм / ииии“ британским / француским стилом датума

Прогласите @дате_тиме_валуе варцхар (100) = '10 / 1/15 21:02:04 'изаберите ЦОНВЕРТ (датетиме2, @дате_тиме_валуе, 3) као УК_Дате_Тиме_Стиле

Слика 4: Тачан формат датума са „дд / мм / ии“ британским / француским стилом датума

Пример 2:

Понекад конверзија низа у датум на СКЛ серверу резултира грешком, не због формата датума или времена који се користе, већ зато што покушавате да сачувате нетачне информације које нису прихватљиве за шему.

Погрешан датум:

Разлог за следећу грешку је само тај што у 2019. години не постоји датум као што је „29. фебруар“, јер то није преступна година.

Декларирај @дате_тиме_валуе варцхар (100) = '2019-02-29 21:02:04' изаберите цаст (@дате_тиме_валуе као датетиме2) као дате_тиме_валуе

Слика 5: Грешка настала јер 2019. није преступна година, па зато нема датум 29. фебруара

Тачно:

Декларирај @дате_тиме_валуе варцхар (100) = '2019-02-28 21:02:04' изаберите цаст (@дате_тиме_валуе као датетиме2) као дате_тиме_валуе

Слика 6: Тачан датум

Формат датума ИСО 8601:

Иако су доступни бројни формати за манипулисање датумским вредностима, када радите за глобалну / међународну масу, одабир датума и времена може представљати проблем употребљивости. Дакле, треба избегавати литературу датума / времена специфичну за културу. Ако овај датум сматрамо „08.08.2018.“, Он ће се тумачити на различите начине у различитим регионима света.

  • У британском стилу то се тумачи као „8. март 2018.“
  • У европском стилу се тумачи као „3. август 2018.“

Срећом, постоји једна алтернатива у међународном формату датума који је развио ИСО. Глобални стандардни формат ИСО 8601 „ГГГГ-ММ-ДДТхх: мм: сс“ више је језички неовисна опција за стринг литерале и бави се свим тим проблемима. Док је „ииии“ година, „мм“ је месец, а „дд“ је дан. Дакле, датум „8. март 2018“ у међународном ИСО формату записан је као „2018-03-08“. Стога је ИСО формат најбољи избор за представљање датума.

Прогласите @дате_тиме_валуе варцхар (100) = '2019-03-28 21:02:04' селецт цонверт (датетиме2, @ дате_тиме_валуе, 126) као [ииии-мм-ддТхх: ми: сс.ммм]

Слика 7: Међународни стандард ИСО 8601 формат датума

Препоруке:

Надам се да ће овај чланак помоћи у уклањању забуне коју сам често виђао у заједници око вредности датума / времена. Међутим, препоручује се да датуме никада не складиштите у текстуалном типу (варцхар, цхар, нварцхар, нцхар или текст) Увек чувајте вредност датума у ​​колонама типа ДАТЕ, ДАТЕТИМЕ и по могућности ДАТЕТИМЕ2 (пружа већу прецизност) и оставите обликовање података о датуму на слој корисничког интерфејса уместо да се преузме из базе података.

2 минута читања