postgres datetime field" x00008F4900000000"

时间:2016-03-23 11:02:42

标签: sql sql-server postgresql datetime

我在MS SQL Server中生成了一个表数据,将其插入到Postgresql中。

脚本具有insert

的格式
INSERT INTO Bank_Draft_Information (Bank_Code, Draft_Type, Transaction_Type, Institution_Code, Serial_Number, Bank_Draft_Date, Total_Amount, Balance_Amount, Created_By, Created_On, Amended_By, Amended_On) 
VALUES

 (6, 'C', 'I', NULL, NULL, 0x00008F4900000000 AS DateTime, 1500.0000, 1000.0000, 1, 0x0000950400000000 AS DateTime, 19, 0x0000A32400000000 AS DateTime));

收到此错误,

  

x00008F4900000000"

处或附近的语法错误

更多,无法再访问MS SQL Server数据库。如何将其转换为postgres日期时间对象?

1 个答案:

答案 0 :(得分:0)

来自this article

  

那么SQL Server如何在内部存储日期?它使用8个字节来存储日期时间值 - 日期的前4个和时间的第4个。 SQL Server可以将两个4字节集合解释为整数。对于日期部分,SQL Server存储的值是基准日期1900年1月1日之前或之后的天数。(...)

     

SQL Server将该时间的第二个整数存储为午夜后的时钟滴答数。第二个包含300个刻度,因此刻度等于3.3毫秒(ms)。您可以通过将日期时间值转换为二进制(8)值并使用子字符串函数提取每组4个字节来查看天和时钟滴答的值。然后,图3中的代码将每组4个字节转换为整数。

考虑到我猜测x00008F49可能代表自1900年1月1日以来的天数,其余的字符串可能是时间表示。因为它全部为0,所以它代表午夜。