在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
答案 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.StartTime
和Table2.StartTime
是不同的数据类型,因此在运行查询时会出错。
Azure SQL DataWahouse数据库支持datetime2
和bigint
。
您可以引用此blob,它显示convert datetime to bigint。
请参阅示例SQL:
update Table1 set StartTime=REPLACE(REPLACE(REPLACE (CONVERT(VARCHAR,x,20) , '-' , '' ),':',''),' ','')
参考文献2:Sql datatype conversion
希望这会有所帮助。