Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
459 views
in Technique[技术] by (71.8m points)

postgresql - fetch max date json object in an array postgres

I'm trying to fetch max date json data from an array..

Here is jsonb column

--------
 value
--------
{
    "id": "90909",
    "records": [
        {
            "name":"john",
            "date": "2016-06-16"
        },
        {
             "name":"koiy",
            "date": "2016-08-26"
        },
        {
            "name":"koiy",
            "date": "2016-01-06"
        }
    ]
}

How to select the maximum date json object in the jsonb column..

expected output:-

{
   "name":"koiy",
   "date": "2016-08-26"
}
        

and this selected json object date should less than the current date.. any suggestions would also helpful..

question from:https://stackoverflow.com/questions/65938908/fetch-max-date-json-object-in-an-array-postgres

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
CREATE TABLE test_table (a json);

INSERT INTO test_table (a) VALUES ('{"id":"90909","records":[{"name":"john","date":"2016-06-16"},{"name":"koiy","date":"2016-08-26"},{"name":"koiy","date":"2016-01-06"}]}');

WITH cte as (
    SELECT json_array_elements(a->'records') as record FROM test_table
)
SELECT record
FROM cte
ORDER BY (record->>'date')::date DESC
LIMIT 1;

->

+-------------------------------------+
| record                              |
|-------------------------------------|
| {"name":"koiy","date":"2016-08-26"} |
+-------------------------------------+
SELECT 1
Time: 0.003s

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...