如何在 mysql 中解析 SQL 服务器二进制日期格式?

How to parse SQL Server binary date format in mysql?

如何将CAST(0xE3350B00 AS DATE)转换成mysql

我使用了各种论坛支持并获得了以下结果

0xE3350B00 => 2059-04-03 22:56
0x0000A17F00000000 => 2013-03-12

但是两个日期都属于同一行数据,所以我相信 0xE3350B00 应该转换为附近的 2013-03-12 但技术上找不到它?如果转换 0xE3350B00 日期,谁能帮忙??

我在 sql 函数中使用了以下代码:

return date_add(date_add("1900-01-01 00:00:00", interval conv(substr(HEX(raw_data), 5, 4), 16, 10) DAY), interval conv(substr(HEX(raw_data), 1, 4), 16, 10) MINUTE);

您的代码看起来好像在解析 SQL 服务器 datetime 值 (though incorrectly if they have any time part)。

这看起来像 SQL 服务器二进制 date 格式。

这些存储方式不同。它们占用三个字节,表示自0001-01-01以来的天数,作为字节反转整数。

您可以使用

SELECT 
      CAST(
          '0001-01-01 00:00:00' + 
          INTERVAL CAST(CONV(
                        CONCAT(substr(HEX(BinaryData),5,2),
                               substr(HEX(BinaryData),3,2),
                               substr(HEX(BinaryData),1,2))
                        , 16, 10)  AS SIGNED) DAY 
      AS DATE) AS converted_date
FROM
(
SELECT 0xE3350B00 AS BinaryData
) d

计算结果为 2012-07-08

SQL Fiddle