Как преобразовать строку в дату и время в SQL - PullRequest
0 голосов
/ 26 августа 2018

Я сделал свой вклад в преобразование строки в дату в SQL Server 2016, но никогда не видел даты в формате, подобном приведенному ниже. Я искал в Интернете возможный способ конвертировать его без успеха. Буду признателен за любую помощь, помогающую мне преобразовать приведенную ниже строку в тип данных datetime в SQL.

Fri Aug 24 2018 22:28:40

С уважением,

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

При работе с нестандартными форматами даты я обычно смотрю функцию CONVERT в SQL Server, так как она очень «эластична»: вы можете предоставить ей различные форматы, чтобы она распознала их соответствующим образом.

Я использую этот сайт для справки. Там вы можете найти, что ближайший формат даты обозначен 100:

0   100    mon dd yyyy hh:miAM/PM    Default

Это ваш формат, за исключением того, что он не включает ненужную в данном случае информацию о дне недели. Так что все, что вам нужно сделать, это вырезать Fri часть:

substring(myDatetimestring, 5, 1000)

или даже лучше

substring(myDatetimeString, charindex(' ', myDatetimeString), 1000)

если часть дня недели может иметь переменную длину. Не беспокойтесь о 1000, это только гарантирует, что у нас будет оставшаяся часть строки, не меньше.

Теперь у нас есть правильный формат даты, поскольку он говорит, что это значение по умолчанию, нам не нужно предоставлять функцию 100 для convert, а также мы можем использовать функцию cast вместо этого, как вы обнаружили, чтобы мы могли делать:

cast(substring(myDatetimeString, charindex(' ', myDatetimeString), 1000) as datetime)

или

convert(datetime, substring(myDatetimeString, charindex(' ', myDatetimeString), 1000), 100)

или

convert(datetime, substring(myDatetimeString, charindex(' ', myDatetimeString), 1000))
0 голосов
/ 26 августа 2018

Нашел способ сделать это в SQL Server:

select cast(right("string",20) as datetime) as dateColumn
from table
...