我在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日期时间对象?
答案 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,所以它代表午夜。