Вычитание дат в диванной базе?

У меня есть ведро Couchbase, в котором хранятся две даты utc в следующем формате:

10-16-2018T18:05:45.823+0000Z

Итак, документ выглядит так:

{
"date1:"10-16-2018T18:05:45.823+0000",
"date2: "10-17-2018T18:05:45.827+0000"
}

Я хочу создать запрос, который позволит мне получить разницу во времени между двумя датами в каждом документе. Я пытался сделать что-то вроде этого:

select date_diff_str('10-16-2018T18:05:45.823+0000','22-11-2018T19:50:45.823+0000','day') as difference;

но это не работает. Благодарен за любую помощь!


person Nespony    schedule 22.11.2018    source источник


Ответы (1)


В JSON нет типа данных timestamp. Отметка времени хранится в формате ISO-8601 YYYY-MM-DDThh:mm:ss.sTZD, который может быть сравним по строке. Все функции даты N1QL работают в формате ISO-8601.

https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/datefun.html

 SELECT DATE_DIFF_STR(
                      SUBSTR(date2,6,4)||"-"|| SUBSTR(date2,0,5)||SUBSTR(date2,10),
                      SUBSTR(date1,6,4)||"-"|| SUBSTR(date1,0,5)||SUBSTR(date1,10),"day")
    LET date1 = "10-16-2018T18:05:45.823+00:00", date2="11-17-2018T18:05:45.827+00:00";
person vsr    schedule 23.11.2018