Преобразовать тип данных Int в дату - PullRequest
1 голос
/ 21 октября 2019

В базе данных сервера SQL, которую я использую, поле хранится как целое число, но это дата. В настоящее время он показывает 20191012. Я пробовал ниже и, кажется, конвертировать, но я хотел бы показать в формате 10/12/2019. Спасибо.

CONVERT(DATE,CONVERT(VARCHAR(20),EFFDAT)) AS DATE_EFF

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Сначала необходимо преобразовать число 20191012 в дату:

SELECT DATEFROMPARTS(
           20191012 / 10000,
           20191012 % 10000 / 100,
           20191012 % 100
       )
-- 2019-10-12 (DATE)

Затем FORMAT it:

SELECT FORMAT(DATEFROMPARTS(
           20191012 / 10000,
           20191012 % 10000 / 100,
           20191012 % 100
       ), 'MM/dd/yyyy')
-- 10/12/2019 (NVARCHAR)

Более простой способэто преобразовать число в строку и сделать пару SUBSTRING() s.

0 голосов
/ 22 октября 2019
DECLARE @myint int = 20191012

SELECT CAST(CAST(@myint as char(8)) as date) AS [theDate]
SELECT CONVERT(char(10), (CAST(CAST(@myint as char(10)) as date)), 101) AS [theDateStyleString]

Это один из способов, когда первый запрос просто преобразует данные в тип данных date, а второй запрос дополнительно преобразуется в строку с форматом MM / DD / YYYY. Но следует понимать, что преобразование в строку - это не то же самое, что сохранение типа данных date, поскольку функции даты и сравнения (>, <и т. Д.) Не работают правильно со строками. </p>

Это приводит к выводу:

theDate
----------
2019-10-12


theDateStyleString
------------
10/12/2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...