SQL DW Convert [datetime2] (7) в [bigint] - PullRequest
       43

SQL DW Convert [datetime2] (7) в [bigint]

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

В базе данных SQL DataWahouse я хочу написать запрос для преобразования [datetime2](7) в bigint

Таблица: 1

[StartTime] [datetime2](7) NULL

Таблица: 2

[StartTime] [bigint] NULL


Select * FROM  Table1 INNER JOIN Table2 
ON Table1.StartTime = Table2.StartTime  -- Geting error

Ответы [ 2 ]

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

Table1.StartTime и Table2.StartTime - это разные типы данных, поэтому при выполнении запроса возникает ошибка.

База данных Azure SQL DataWahouse поддерживает datetime2 и bigint.

* 1008.* Вы можете сослаться на этот BLOB-объект, он показывает преобразование даты и времени в bigint .

См. Демонстрационный SQL:

update Table1 set StartTime=REPLACE(REPLACE(REPLACE (CONVERT(VARCHAR,x,20) , '-' , '' ),':',''),' ','')

Ссылка 2: Преобразование типа данных Sql

Надеюсь, это поможет.

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

Это не сработает.

datetime2 не является целым числом.Следующая ссылка обсуждает его внутреннюю структуру данных: https://sqlfascination.com/2009/10/11/what-is-the-sql-server-2008-datetime2-internal-structure/

Какое представление вашего T2.StartTime?Это миллисекунды от начальной точки?Может помочь следующая ссылка: MSSQL - конвертировать миллисекунды с 1970 года в datetime2

Тем не менее, пожалуйста, не присоединяйтесь, производительность будет ужасной.Кроме того, логика объединения между datetime2 и datetime2, созданным из целого числа, очень пугающая ... если предполагается, что они оба являются датами, то сохраните их как даты.В противном случае будьте готовы к очень большому количеству пропущенных кандидатов на вступление из-за проблем с точностью, с которыми вы столкнетесь.

...