[英]PostgreSQL -> SQLite: DATE_TRUNC Equivalent
星期五下午,我被炒了。 所以SQL愛好者如何在PostgreSQL中使用以下WHERE子句並將其轉換為SQLite3而不使用已編譯的擴展:
WHERE
DATE_TRUNC('day', c.start_date) <= DATE_TRUNC('day', q.date) AND
DATE_TRUNC('day', c.end_date) >= DATE_TRUNC('day', q.date)
在SQLite3中查看日期/時間函數似乎它們只用於字符串格式化。 希望我看錯了。
SQLite沒有日期的數據類型; 它使用字符串或數字代替。
要刪除時間戳的時間部分,請使用“ start of day
修改器 。 要使用的實際函數( datetime()
, julianday()
, strftime('%s')
)取決於日期值的格式:
WHERE
datetime(c.start_date, 'start of day') <= datetime(q.date, 'start of date') AND
datetime(c.end_date, 'start of day') >= datetime(q.date, 'start of date')
在這種情況下,您可以使用date()
函數,因為您不關心結果的實際格式,只關注它的比較方式:
WHERE
date(c.start_date) <= date(q.date) AND
date(c.end_date) >= date(q.date)
我無法使上述方法工作數小時或數分鍾。
對於這些,你可以使用strftime
功能破解一些東西,如下所示:
select datetime(strftime('%Y-%m-%dT%H:00:00', 'now'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.