SQL DW将[datetime2](7)转换为[bigint]

时间:2019-02-14 06:04:10

标签: azure-sql-database azure-sqldw

在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 :(得分:0)

这行不通。

datetime2不是整数。以下参考资料讨论了其内部数据结构: https://sqlfascination.com/2009/10/11/what-is-the-sql-server-2008-datetime2-internal-structure/

您的T2.StartTime代表什么?从起点算起是毫秒?以下参考资料可能会有所帮助: MSSQL - Convert milliseconds since 1970 to datetime2

也就是说,请不要像这样加入,演出会很糟糕。此外,在由整数创建的datetime2和datetime2之间进行联接的逻辑非常吓人……如果它们都假定为DATES,则将它们存储为日期。否则,由于您将要遇到的精度问题,请为大量错过的应聘者做好准备。

答案 1 :(得分:0)

Table1.StartTimeTable2.StartTime是不同的数据类型,因此在运行查询时会出错。

Azure SQL DataWahouse数据库支持datetime2bigint

您可以引用此blob,它显示convert datetime to bigint

请参阅示例SQL:

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

参考文献2:Sql datatype conversion

希望这会有所帮助。