Како исправити & лскуо; конверзију која није успела приликом конверзије датума и / или времена из низа знакова & рскуо; Грешка?

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

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

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

Пример 1:

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

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

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

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

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

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

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

Пример 2:

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

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

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

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

Тачно:

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

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

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

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

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

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

Препоруке:

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