Mysql
 sql >> база данни >  >> RDS >> Mysql

как да прехвърля шестнадесетичния към varchar (datetime)?

Това изглежда като SQL Server datetime формат. Вътрешно това се съхранява като 2 цели числа, като първите 4 байта са дните от 1 януари 1900 г., а вторият е броят на тиковете от полунощ (всеки тик е 1/300 от секундата).

Ако трябва да използвате това в MySQL, можете да направите

SELECT 
      CAST(
          '1900-01-01 00:00:00' + 
          INTERVAL CAST(CONV(substr(HEX(BinaryData),1,8), 16, 10)  AS SIGNED) DAY +
          INTERVAL CAST(CONV(substr(HEX(BinaryData),9,8), 16, 10)  AS SIGNED)* 10000/3 MICROSECOND
      AS DATETIME) AS converted_datetime
FROM
(
SELECT 0x0000987C00000000 AS BinaryData
UNION ALL
SELECT 0x00009E85013711EE AS BinaryData
) d

Връща

converted_datetime
--------------------------
2006-11-17 00:00:00
2011-02-09 18:52:34.286667

(Благодаря на Тед Хоп за решението при разделяне на двоичните данни)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намеря най-голямата таблица в MySQL база данни?

  2. Изявление за избор на MySQL с CASE или IF ELSEIF? Не сте сигурни как да получите резултата

  3. MySQL не използва индекси с клауза WHERE IN?

  4. MySQL Trigger след актуализация само ако редът е променен

  5. Трябва ли да използвам типа данни за дата и час в MySQL?