簡體   English   中英

PostgreSQL - > SQLite:DATE_TRUNC等效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM