jpi*_*pic 3 sql postgresql datetime json
我想使用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...
Run Code Online (Sandbox Code Playgroud)
可以直接存储UTC时间戳,但是解码器怎么知道该值应该解码为日期或日期时间而不是int?
也可以将Date.UTC调用存储为字符串,如下所示:
update formapp_record set data='{"dt": "Date.UTC(120, 10, 2)"}' where id=17;
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它需要0.检查字符串是否以Date.UTC开头,并且1.在plv8中使用eval
解决方案是存储一些元数据,如:
update formapp_record set data='{"dt": {"_type": "date", "_value": [120, 10, 2]}}' where id=17;
Run Code Online (Sandbox Code Playgroud)
但那不是很"标准",甚至是"黑客".
你对这件事有什么看法?