如何在 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
。
如何将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
。