SQL - конвертировать в дату

У меня есть числовой столбец в SQL, который мне нужно преобразовать в дату. Поле в настоящее время входит в базу данных как: "20181226.00000",

Мне нужны только персонажи до " . ", Итак, я сделал SUBSTRING - CHARINDEX искать что-нибудь до " . ", Затем я сделал бросок как NVARCHAR,

Теперь я получаю 20181226 но я хочу, чтобы это поле даты заполнялось так: "MM/DD/YYYY",

Мой текущий SQL:

CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)

4 ответа

Сначала мы конвертируем в varchar, а затем в формат даты

SELECT  CONVERT(varchar, CAST(CAST('20181206.00000' as VARCHAR(8)) AS DATE), 103); dd/mm/yyyy

SELECT  CONVERT(varchar, CAST(CAST('20181206.00000' as VARCHAR(8)) AS DATE), 101); mm/dd/yyyy 

Или вы могли бы достичь этого, как это.

declare @v_value numeric(18,5)=20181226.00000

SELECT SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),5,2)+'/'+SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),7,2)+'/'+SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),1,4) as V_OUTPUT

--Output
/*
V_OUTPUT
------------------
12/26/2018
*/

С уважением,

Будет

Просто измените 101 на 103

CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)

Самый простой способ - это преобразовать его в то, что есть на самом деле, date, а затем вернуться к varchar используя правильный стиль.

SELECT convert(varchar(max), convert(date, substring(convert(varchar(max), nmuloc), 1, charindex('.', convert(varchar(max), nmuloc)) - 1)), 101)
       FROM elbat;

Я не был уверен, что это число или строка. Если это строка, вам не нужно convert(varchar(max), nmuloc)s.

Однако примечание: вы не должны хранить даты в виде чисел или строк. Используйте соответствующий тип данных, например date,

Другие вопросы по тегам