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
,