В основном я использую гем MySQL для Ruby , и у меня нет разумной поддержки для сравнения дат.Класс Mysql::Time дает мне только методы доступа, такие как год, месяц, секунда и т. Д. Я мог бы сделать намного лучшее сравнение дат, если бы мог превратить это в объект Ruby DateTime.Как преобразовать поле DateTime в MySQL в юлианский номер дня, который можно передать в DateTime.jd?
Mysql::Time
DateTime.jd
Использование:
TO_DAYS(col)+1721060
Для преобразования в юлианскую дату.
И
FROM_DAYS(col-1721060)
конвертировать из юлианской даты.
(я использую хронологическую юлианскую дату, которая начинается в полночь, потому что она более полезна.)
Вы можете использовать функцию MySQL TO_DAYS, чтобы получить дату в виде целого числа дней, начиная с нуля года (и просто добавить соответствующее смещение, чтобы иметь Юлианский день ), или вы можете использовать функцию UNIX_TIMESTAMP, чтобы получить целое число секунд с 1970-01-01 00:00:00 UTC.
TO_DAYS
UNIX_TIMESTAMP
class Mysql::Time def to_datetime DateTime.civil(year,month,day,hour,minute,second) end end
Попробуйте использовать Ruby / DBI вместо непосредственного использования гема MySQL.Ruby / DBI должен позаботиться о преобразовании в стандартные классы Ruby для вас автоматически, и в качестве дополнительной бонусной функции, если вы когда-либо меняете СУБД, на которой вы работаете, использование DBI не меняется.