Date.UTCを使用して、postgresql 9.2の「json」フィールドに日付と日時を保存したかったのですが、もちろん失敗します。
hp=> update formapp_record set data='{"dt": Date.UTC(120, 10, 2)}' where id=17;
ERROR: invalid input syntax for type json
LINE 1: update formapp_record set data='{"dt": Date.UTC(120, 10, 2)}...
^
DETAIL: Token "Date" is invalid.
CONTEXT: JSON data, line 1: {"dt": Date...
UTCタイムスタンプを直接保存することは可能ですが、デコーダーは、値がintではなく日付または日時にデコードする必要があることをどのようにして知ることができますか?
Date.UTC呼び出しを文字列として保存することもできます。
update formapp_record set data='{"dt": "Date.UTC(120, 10, 2)"}' where id=17;
それは機能しますが、0が必要です。文字列がDate.UTCで始まるかどうかを確認し、1。plv8でevalを使用します。
解決策は、次のようなメタデータを保存することです。
update formapp_record set data='{"dt": {"_type": "date", "_value": [120, 10, 2]}}' where id=17;
しかし、それはあまり「標準的」ではなく、「ハック的」ですらあります。
この問題についてどう思いますか?