Added a SQLite section to query_next_available_episode.md
parent
9c2a66f9f3
commit
9df590f855
@ -1,4 +1,4 @@
|
||||
# Documentation of the `query query_next_available_episode`
|
||||
# Documentation of the query `query_next_available_episode`
|
||||
|
||||
## Purpose
|
||||
|
||||
@ -153,6 +153,33 @@ Using the full query against the database on 2023-10-12 we get the following res
|
||||
+---------+------------+------------+
|
||||
```
|
||||
|
||||
## Differences in the SQLite version
|
||||
|
||||
1. Many of the functions used take string arguments, and since the query is
|
||||
stored in a single-quoted string, these have to be escaped with a backslash.
|
||||
|
||||
2. The SQLite function to get the current date is `date('now')`
|
||||
|
||||
3. The SQLite function to get the day of the week from a date is
|
||||
`strftime('%w',last_date)` and the values are 0 for Sunday and 6 for Saturday.
|
||||
|
||||
4. When adding days to a date in SQLite the function is `date(date,'+3 days')`
|
||||
and this is why such strings are returned from the `CASE` statement.
|
||||
|
||||
5. To compute the difference in days between two dates in SQLite it is
|
||||
necessary to convert dates to Julian dates and subtract the values. This can
|
||||
give a negative result, so we use `abs()` to prevent it. The result is
|
||||
fractional because of the way Julian dates are implemented in SQLite, so
|
||||
`printf('%i,?)` is used to get the integer part. Therefore, the following
|
||||
expression is needed:
|
||||
```
|
||||
printf('%i',
|
||||
abs(
|
||||
julianday(DATE (prev_date, date_offset)) -
|
||||
julianday('now') + 1)
|
||||
) AS delta_days
|
||||
```
|
||||
|
||||
<!--
|
||||
vim: syntax=pandoc:ts=8:sw=4:tw=0:et:ai:
|
||||
-->
|
||||
|
Reference in New Issue
Block a user