CAST (0x00009F0900000000 AS DateTime) с Ruby или MySql - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь преобразовать эту строку "0x00009F0900000000" в дату через MySql или Rails, так как я работаю над миграцией.

Не могу найти, какой это формат.Не похоже, что есть способ преобразовать шестнадцатеричное значение в дату с помощью rails или mysql.

Решение, найденное здесь: как привести шестнадцатеричное значение к varchar (datetime)?

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 0x00009F0900000000 AS BinaryData
) d

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

в рубине (и игнорируя время)

require 'date'
str =  "0x00009F0900000000"
p Date.new(1900,1,1) + str[0..9].hex
#<Date: 2011-06-21 ((2455734j,0s,0n),+0s,2299161j)>
0 голосов
/ 29 февраля 2012

Это самый близкий к вашему вопросу вопрос:

> "0x00009F0900000000".to_i(16)
 => 174861003522048 
> time = "0x00009F0900000000".to_i(16)
 => 174861003522048 


> Time.at(time/1000)
 => 7511-02-16 05:58:42 +0100 


> Time.at(time/1000000)
 => 1975-07-17 21:30:03 +0100 

Попробуйте несколько делителей, пока не получите то, что должно быть точным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...