簡體   English   中英

將sqlite轉換為postgres查詢

[英]convert sqlite to postgres query

有人可以幫助我將此sqlite查詢轉換為postgres查詢嗎?

SELECT count(*), count(*), date(date, '-'||strftime('%w',date)||' days') as date
FROM emails as m, contacts as me
WHERE datetime(date) > datetime('2010-08-25')
  and datetime(date) < datetime('2011-08-25')
  and (me.id = m.fr)
  and me.email like '%gmail.com%'
GROUP BY date
ORDER BY date asc

更新后,我找到了答案:

select count(*), (m.date::date - extract(dow from m.date)::int) as dat
from emails as m join contacts as me on m.fr = me.id
where m.date > '2010-08-25'
  and m.date < '2011-08-25'
  and me.email like '%gmail.com%'
group by dat
order by dat

strftime業務已在其他地方處理,因此我們只需要在此處整理datetime(...)內容並補償date是時間戳即可。 在這里時,我將切換到顯式連接條件(而不是WHERE子句中的隱式條件)。

select count(*), count(*), m.date::date - extract(dow from m.date)::int as date
from emails as m join contacts as me on m.fr = me.id
where m.date > '2010-08-25'
  and m.date < '2011-08-25'
  and me.email like '%gmail.com%'
group by m.date
order by m.date asc

PostgreSQL可以自己將時間戳與ISO8601日期字符串進行比較,因此您無需進行任何強制轉換或重新格式化即可進行比較。

這兩個count(*)在我看來仍然很有趣,但是我不知道使用查詢的上下文,因此重復可能有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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