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