Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Π‘Π±ΠΎΠΉ прСобразования ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ / ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· строки символов»?

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π΄Π°Ρ‚Π° ΠΈ врСмя Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ потрСбностям Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ. БущСствуСт нСсколько встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ SQL Server для форматирования строки Π΄Π°Ρ‚Ρ‹ Π² соотвСтствии с вашими потрСбностями, Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строка ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ SQL Server ΠΈ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ошибок прСобразования, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Когда ΠΌΡ‹ пытаСмся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΈΠ»ΠΈ врСмя ΠΈΠ· символьной строки, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ошибка. «Ошибка прСобразования ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ/ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· символьной строки.Β»

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ ошибка ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π΄Π°Ρ‚Ρ‹ Π½Π΅Π²Π΅Ρ€Π΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΈΠ· строки Π² DateTime ΠΈΠ»ΠΈ Π΄Π°Ρ‚Ρƒ. Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ обсудим вмСстС с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ΅ ΠšΠΎΡ€ΠΎΠ»Π΅Π²ΡΡ‚Π²ΠΎ Π’ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π°Ρ‚Π° отобраТаСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ дСнь-мСсяц-Π³ΠΎΠ΄ (10 января 2015 Π³. ΠΈΠ»ΠΈ 01.10.2015). ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«convertΒ» встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SQL Server со стилСм форматирования 103.

Π—Π΄Π΅ΡΡŒ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ прСдоставлСнная строка Π΄Π°Ρ‚Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ прСдоставляСт мСсяц, Π·Π°Ρ‚Π΅ΠΌ Π΄Π½ΠΈ ΠΈ послСдний Π³ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ SQL Server, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для прСобразования Π΄Π°Ρ‚Ρ‹ Π² стилС Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ с использованиСм стиля Π΄Π°Ρ‚Ρ‹ Β«103Β» – Β«Π΄Π΄/ΠΌΠΌ/Π³Π³Π³Π³Β».

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

 Declare @date_time_value varchar (100) = '10/16/2015 21:02:04 'Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ CONVERT (datetime2, @date_time_value, 103) ΠΊΠ°ΠΊ UK_Date_Time_Style 

Британский ΠΈ французский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Ρ‚Ρ‹: 103 = Β«dd/mm/ Π³Π³Π³Π³ Β»ΠΈΠ»ΠΈ 3 =Β« Π΄Π΄/ΠΌΠΌ/Π³Π³ Β». Π—Π΄Π΅ΡΡŒ 103 ΠΈ 3 – стили Π΄Π°Ρ‚Ρ‹.

 Declare @date_time_value varchar (100) = '10/1/15 21: 02: 04 'Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ CONVERT (datetime2, @date_time_value, 103) ΠΊΠ°ΠΊ Date_Time_Style 

 ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ @date_time_value varchar (100) = '10/1/15 21: 02: 04 'Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ  ΠŸΠ Π•ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠ’Π¬ (datetime2, @date_time_value, 3) ΠΊΠ°ΠΊ UK_Date_Time_Style 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

Иногда ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² Π΄Π°Ρ‚Ρƒ Π½Π° сСрвСрС SQL ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС Π½Π΅ ΠΈΠ·-Π·Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡƒΡŽ для схСма.

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Π΄Π°Ρ‚Π°:

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ошибки проста Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² 2019 Π³ΠΎΠ΄Ρƒ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π΄Π°Ρ‚Ρ‹, ΠΊΠ°ΠΊ Β«29 фСвраля», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π½Π΅ високосный Π³ΠΎΠ΄.

 ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ  @date_time_value varchar (100) = '2019-02-29 21:02:04' Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (@date_time_value ΠΊΠ°ΠΊ Π΄Π°Ρ‚Ρƒ  time2) ΠΊΠ°ΠΊ date_time_value 

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

 ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ @date_time_value varchar (100) = '2019-02-28 21: 02: 04'select  ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (@date_time_value ΠΊΠ°ΠΊ datetime2) ΠΊΠ°ΠΊ date_time_value 

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Ρ‚Ρ‹ ISO 8601:

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для управлСния значСниями Π΄Π°Ρ‚ доступны многочислСнныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с глобальной/ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ массой Π²Ρ‹Π±ΠΎΡ€ прСдставлСния datetime ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для удобства использования. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Ρ‚Π° ΠΈ врСмя, зависящиС ΠΎΡ‚ языка ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Если ΠΌΡ‹ считаСм эту Π΄Π°Ρ‚Ρƒ Β«08.03.2018Β», ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ… ΠΌΠΈΡ€Π°.

  • Π’ британском стилС интСрпрСтируСтся ΠΊΠ°ΠΊ Β«8 ΠΌΠ°Ρ€Ρ‚Π° 2018 Π³ΠΎΠ΄Π°Β».
  • Π’ СвропСйском стилС это интСрпрСтируСтся ΠΊΠ°ΠΊ Β«3 августа 2018 Π³ΠΎΠ΄Π°Β».

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π² ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄Π°Ρ‚Ρ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ ISO. Π€ΠΎΡ€ΠΌΠ°Ρ‚ глобального стандарта ISO 8601 Β«Π“Π“Π“Π“-ММ-Π”Π”TΡ‡Ρ‡: ΠΌΠΌ: сс» являСтся Π±ΠΎΠ»Π΅Π΅ нСзависимым ΠΎΡ‚ языка Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ для строкового облСгчСния. rals, ΠΈ ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Β«Π³Π³Π³Π³Β» – это Π³ΠΎΠ΄, Β«ΠΌΠΌΒ» – мСсяц, Π° Β«Π΄Π΄Β» – дСнь. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Ρ‚Π° Β«8 ΠΌΠ°Ρ€Ρ‚Π° 2018 Π³ΠΎΠ΄Π°Β» Π² ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ISO записываСтся ΠΊΠ°ΠΊ Β«2018-03-08Β». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ISO – Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для прСдставлСния Π΄Π°Ρ‚Ρ‹.

 ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ @date_time_value varchar (100) = '2019-03-28 21: 02: 04'select convert (datetime2, @ date_time_value, 126)  ΠΊΠ°ΠΊ [yyyy-mm-ddThh: mi: ss.mmm] 

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ :

НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я часто Π²ΠΈΠ΄Π΅Π» Π² сообщСствС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Однако рСкомСндуСтся Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹ Π² тСкстовом Π²ΠΈΠ΄Π΅ (varchar, char, nvarchar, nchar ΠΈΠ»ΠΈ text). ВсСгда ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‹ Π² столбцах Ρ‚ΠΈΠΏΠ° DATE, DATETIME ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ DATETIME2 (обСспСчиваСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ) ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄Π°Ρ‚Π΅. Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса вмСсто получСния ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ
techscreen.ru
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ