我有一个postgres数据库。内部"匹配"表我存储了一个像这样的JSONB,在"当"柱:
{{"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}, {"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}}
它就像一个存储开始时间和结束时间的对象列表。 现在我想查询所有未过去的比赛。我怎样才能做到这一点?是否可以比较单个"开始"当前数据的值?
答案 0 :(得分:1)
您可以使用error: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc does not exist
usage: /usr/local/bin/docker-php-ext-enable [options] module-name [module-name ...]
ie: /usr/local/bin/docker-php-ext-enable gd mysqli
/usr/local/bin/docker-php-ext-enable pdo pdo_mysql
/usr/local/bin/docker-php-ext-enable --ini-name 0-apc.ini apcu apc
Possible values for module-name:
opcache.so sodium.so
Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
运算符查询jsonb。对于日期/时间,您需要转换结果才能进行比较。此查询仅返回具有未来开始的值:
->>
请注意,您在上面提供的JSON格式不正确。我把它分成小提琴中的不同行:
SELECT when_col->>'start' FROM match
WHERE to_date(when_col->>'start','YYYY-MM-DD"T"HH24:MI:SS') >= NOW();