1
私はAccessデータベースから取得しているタイムスタンプを持っています。残念ながら、タイムスタンプは時刻のみを表しますが、1899-12-30 13:05:00 +0000
として保存されます。日付部分は別のフィールドにあります。私はjsonブロブに格納している間、できるだけ多くのデータを保持する必要があります。Ojタイムダンプ - LinuxとWindowsの違い
私はjsonにデータをダンプするためにOj(すばらしいです)を使用しています。私は、Windowsプラットフォーム上で次の動作が発生した:
irb(main):001:0> require 'oj'
=> true
irb(main):002:0> t = Time.new(1899,12,30,13,5,0) #this is my actual timestamp
=> 1899-12-30 13:05:00 +0000
irb(main):003:0> Oj.dump(t)
RangeError: bignum too big to convert into `long'
from (irb):3:in `dump'
from (irb):3
from C:/RailsInstaller/Ruby2.2.0/bin/irb:11:in `<main>'
irb(main):004:0>
さて、Linux上:
2.3.0 :001 > require 'oj'
=> true
2.3.0 :002 > t = Time.new(1899,12,30,13,5,0)
=> 1899-12-30 13:05:00 +0000
2.3.0 :003 > Oj.dump(t)
=> "{\"^t\":-2209114500.000000000e0}"
は私のソース・データベースがMSアクセスであるので、Windows上でこの作業を行う必要があります。助けてください。
あなたは、Accessデータベースからの時間列を取得することができます'1899-12-30 13:05:00'の代わりに' 0.545138888888889'を返す、 'SELECT CDbl(TimeValue)AS DayFraction FROM tblTimes'のように、DateTimeの代わりにDoubleとして使用しますか? –
それはいい考えですが、私はテーブルがたくさんあり、さらにこれらのフィールドの多くを持っています。私はテーブルごとにカスタム 'SELECT'を書いてはいけません。 Sequelの 'db [:table] .all'は素晴らしいです。今まで私はあきらめました。各レコードの 'Time'値ごとにブルートテスト' Oj.dump'を行い、失敗した場合は71年追加しています。エレガントではありませんが、動作し、十分に速いです。 – avguchenko
これは32/64bitの問題ですか?最小符号長は(-1)* 2^31または-2147483648です。あなたの価値は-2209114500であり、できるだけ薄いものよりも小さい。 – BitAccesser