SQL - конвертировать в дату - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть числовой столбец в 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 ]

0 голосов
/ 27 декабря 2018

Сначала мы конвертируем в 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 
0 голосов
/ 27 декабря 2018

Самый простой способ - преобразовать его в то, что есть на самом деле, в 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.

0 голосов
/ 27 декабря 2018

Или вы можете достичь этого следующим образом.

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
*/

С наилучшими пожеланиями,

Воля

0 голосов
/ 27 декабря 2018

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

CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...