如何让mysql输出DateTime到Julian天数?

时间:2010-07-03 08:33:35

标签: mysql ruby

基本上我使用的是MySQL gem for Ruby,我对日期比较没有合理的支持。 Mysql::Time类只给我一些访问器方法,如年,月,秒等。如果我可以将其转换为Ruby DateTime对象,我可以做更好的日期比较。如何将MySQL的DateTime字段转换为可以传递给DateTime.jd的Julian日期号?

6 个答案:

答案 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