我想使用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 时间戳,但是解码器如何知道该值应该解码为 date 或 datetime 而不是 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;
但这不是很“标准”,甚至是“hackish”。
你对这件事怎么看?