2010-07-03 3 views
2

기본적으로 MySQL gem for Ruby을 사용하고 있으며 날짜 비교를위한 적절한 지원이 없습니다. Mysql::Time 클래스는 Year, Month, Second 등의 접근 메소드 만 제공합니다. Ruby DateTime 객체로 바꿀 수 있다면 훨씬 더 나은 날짜 비교를 할 수 있습니다. MySQL의 DateTime 필드를 DateTime.jd으로 전달할 수있는 율리우스 요일로 변환하는 방법은 무엇입니까?mysql에서 줄리안 날짜 수로 DateTime을 출력하려면 어떻게해야합니까?

+0

것은 내가 발견으로이 날짜 시간 서브 클래스와 함께 사용하기위한되지 않았을 수 있음을 DateTime.jd를 사용주의 날짜. Date 클래스에만 유효합니다. 이것을 표시하려면 DateTime.jd (2455145)를 시도하십시오. 그런 다음 같은 번호를 여기에 연결하십시오 http://aa.usno.navy.mil/data/docs/JulianDate.php 정확한 시간을 얻었습니까? 10 진수가없는 모든 줄리안 데이 번호는 12 시가되어야합니다.이 DateTime 개체를 사용하는 Ruby 변환의 jd는 버그 일 수 있습니다. 누군가 내가 그걸 어디서부터 시작해야할지 모르겠다면보고 해주십시오. 감사! DateTime.jd() 사용에 대한 두 센트. –

+0

http://apidock.com/ruby/DateTime/jd/class에서 확인할 수 있습니다. 그러나 해결책을 보여주기 때문에 버그에 대한 의견은 철회 할 것입니다. 여전히 잘못된 것 같습니다. 줄리안 날 번호를 보내고 여전히 시간을 얻을 수있는 Date.ajd()에 대한 Date와 같은 메소드가 있어야합니다. http://apidock.com/ruby/v1_9_3_392/Date/jd/class 나는 타원형을 사용하여 항상 타원을 사용하여 마무리합니다. 실제로 그것을보기 위해 자신의 일을 해보십시오. 그리고 .ajd()는 제 의견으로는 정확한 DateTime.ajd (2455145.5) 숫자를 포함하는 적절한 변환을 제공하지 않습니다. –

답변

1

MySQL 보석을 직접 사용하는 대신 Ruby/DBI을 사용하는 것을 고려하십시오. Ruby/DBI는 자동으로 표준 Ruby 클래스로 변환해야하며 실행중인 DBMS를 변경하면 추가 보너스 기능으로 DBI 사용이 변경되지 않습니다.

+0

나는 여전히 MySQL gem을 사용한다. – Zombies

+0

@Zombies, 예. 후드 아래에서는 실제로 MySQL과 대화하기 위해 MySQL 보석을 사용합니다. –

+0

수용 할 답변으로 선택할 수있는 사람은 누구입니까 ?? – Zombies

2

당신은 년 이후의 일 정수 번호와 날짜를 얻기 위해 MySQL을의 TO_DAYS 기능을 사용할 수 있습니다 제로 (단지 Julian Day number이 오프셋 적절한 추가), 또는 당신의 정수를 얻기 위해 UNIX_TIMESTAMP 기능을 사용할 수 있습니다 1970-01-01 00:00:00 UTC 이후 초입니다.

+0

"적절한 오프셋"은 1721059.5 – dan04

+0

@ dan04입니다. Ruby는 0.5가없는 정수 *로 사용하기를 원합니다. 그러나 그것에 대해서는 확실하지 않습니다. 일부 실험이 순서대로 진행될 수 있습니다. –

1
class Mysql::Time 
    def to_datetime 
    DateTime.civil(year,month,day,hour,minute,second) 
    end 
end 
4

사용 :

TO_DAYS(col)+1721060 

이 율리우스 날짜로 변환합니다.

그리고 :

FROM_DAYS(col-1721060) 

는 율리우스 날짜 변환하는.

은 (내가 더 유용하기 때문에 자정에 시작 연대기 율리우스 날짜를 사용하고 있습니다.)

관련 문제