SQLite - получить все часы из диапазона дат - PullRequest
0 голосов
/ 24 марта 2019

У меня есть запрос SQLite, в котором перечислены все дни между двумя датами. Я хочу добиться того же с часами тех дней.

Это мой текущий запрос, чтобы получить все дни между двумя датами

WITH RECURSIVE dates(starttime) AS
(VALUES(min(starttime))
UNION ALL SELECT date(starttime, '+1 day')
FROM v_sessions
WHERE endtime <= max(startTime))
SELECT Date(starttime) AS Date
FROM v_sessions
GROUP BY Date
ORDER BY date

выход


Date
2018-10-21
2018-10-22
2018-10-23
2018-10-24
2018-10-25
2018-10-26
2018-10-27
2018-10-28
2018-10-29
2018-10-30
2018-10-31

Это желаемый результат измененного запроса.

__________
Date
2018-10-19 01:00:00
2018-10-19 02:00:00
2018-10-19 03:00:00
2018-10-19 04:00:00
2018-10-19 05:00:00
2018-10-19 06:00:00
…..
2018-10-19 23:00:00
2018-10-20 00:00:00
2018-10-20 01:00:00
2018-10-20 02:00:00
…

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я решил решить эту проблему с помощью C #, который я использую для своего варианта использования.

           using (SQLiteConnection con = new SQLiteConnection("Data Source = data\\Reporting.db; Version = 3;"))
                {
                    con.Open();
                    using (SQLiteCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = queryString;
                        while (startDateTime <= endDateTime)
                        {
                            cmd.Parameters.AddWithValue("$date", startDateTime);

                            maxConcurrentSessions.Rows.Add(startDateTime, Convert.ToInt32(cmd.ExecuteScalar()));

                            startDateTime = startDateTime.AddHours(1);
                        }
                    }
                    con.Close();
                }
0 голосов
/ 24 марта 2019

В основном вам нужно использовать datetime вместо date.

Суть в том, чтобы изменить это date(starttime, '+1 day') на datetime(starttime, '+1 hour').Вы можете использовать start: datetime(starttime,'start of day') и end: datetime(endtime, 'start of day','+23 hours'), если вы хотите, чтобы все часы указывались в определенных датах, или какую-либо другую арифметику дат, если время начала и окончания включают определенные часы ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...