基本上我使用的是MySQL gem for Ruby,我对日期比较没有合理的支持。 Mysql::Time
类只给我一些访问器方法,如年,月,秒等。如果我可以将其转换为Ruby DateTime对象,我可以做更好的日期比较。如何将MySQL的DateTime字段转换为可以传递给DateTime.jd
的Julian日期号?
答案 0 :(得分:5)
使用:
TO_DAYS(col)+1721060
转换为朱利安日期。
和
FROM_DAYS(col-1721060)
从julian日期转换。
(我使用从午夜开始的按时间顺序排列的朱利安日期,因为它更有用。)
答案 1 :(得分:2)
您可以使用MySQL的TO_DAYS
函数将日期作为自零年以来的整数天数(并添加适当的偏移量以获得Julian Day number),或者您可以使用{ {3}}函数获取自1970-01-01 00:00:00 UTC以来的整数秒数。
答案 2 :(得分:1)
考虑使用Ruby/DBI而不是直接使用MySQL gem。 Ruby / DBI应该自动为您处理标准Ruby类的转换,如果您更改正在运行的DBMS,则作为额外的奖励功能,您对DBI的使用不会改变。
答案 3 :(得分:1)
class Mysql::Time
def to_datetime
DateTime.civil(year,month,day,hour,minute,second)
end
end
答案 4 :(得分:0)
此公式从2000年到2099年是正确的:
Julian_date = (YEAR(date)-2000)*1000 + DAYOFYEAR(date)
答案 5 :(得分:0)
SELECT
DATE_ADD(CONCAT(substring(julian_date,1,2), '-01-01'), INTERVAL substring(julian_date,3,3)-1 DAY)
FROM table