Конвертировать SQL BigInt как 1811011439 в формат даты и времени - PullRequest
0 голосов
/ 14 января 2019

Моя строка Datetime выглядит примерно так:

1811011439
1811011439
1811011439
1811011439
1811011439
1811011439

Это может читаться так

Y. 18
M. 11
D. 01 

в первой строке, как вы видите

Может, кто-нибудь подскажет мне, как я могу преобразовать его в читаемый формат даты.

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Насколько я понимаю запрос, ваша дата в формате VARCHAR как 'YYMMDDHHmm', поэтому самый простой способ:

DECLARE @TextDate AS NVARCHAR(20) = '1811011439';
SELECT CAST(SUBSTRING(@TextDate, 1, 6) AS DATE);

Или если это поле в одной таблице:

SELECT CAST(SUBSTRING(YourField, 1, 6) AS DATE) FROM YourTable;
0 голосов
/ 14 января 2019

Я думаю, что ваш столбец не является BIGINT типом данных, это VARCHAR, и вы хотите отделить дату от него

SELECT CAST(LEFT('1811011439', 6) AS DATE)

Если это действительно столбец BIGINT, просто преобразуйте его в VARCHAR, разделите его, а затем CAST как DATE

SELECT CAST(LEFT(CAST(YourColumn AS VARCHAR), 6) AS DATE)
SELECT CAST(LEFT(YourColumn, 6) AS DATE) --It works too

Тем не менее, правильный ответ на этот вопрос - использовать правильный тип данных, который DATETIME

0 голосов
/ 14 января 2019

Вы хотите преобразовать репрезентацию строки значения даты и времени (сохраненного как bigint) в читаемый формат. В этом случае вы можете CAST часть даты строки / bigint в DATE значение:

SELECT CAST(LEFT(CAST(1811011439 AS VARCHAR), 6) AS DATE)
-- 2018-11-01

Я рекомендую использовать столбец DATETIME вместо столбца BIGINT для хранения значений, как это. Со следующим SELECT вы получите все DATETIME значения:

SELECT CAST(SUBSTRING(CAST(1811011439 AS VARCHAR), 1, 6) + ' ' + SUBSTRING(CAST(1811011439 AS VARCHAR), 7, 2) + ':' + SUBSTRING(CAST(1811011439 AS VARCHAR), 9, 2) AS DATETIME)
-- 2018-11-01 14:39:00.000
...