我有在我使用的MySQL的應用程序。我有一份報告,記錄了過去24小時的記錄。我使用了查詢:記錄從昨天在postrgesql
WHERE (DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= FROM_UNIXTIME(`workorder`.`CREATEDTIME`/1000))
現在我必須使用PostgreSQL並且不知道如何創建最近24小時的報告。 你們能幫忙嗎?
我有在我使用的MySQL的應用程序。我有一份報告,記錄了過去24小時的記錄。我使用了查詢:記錄從昨天在postrgesql
WHERE (DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= FROM_UNIXTIME(`workorder`.`CREATEDTIME`/1000))
現在我必須使用PostgreSQL並且不知道如何創建最近24小時的報告。 你們能幫忙嗎?
WHERE workorder.createdtime > current_date - 1 -- Yesterday and today
WHERE workorder.createdtime > current_timestamp - interval '1 day' -- last 24hr
where workorder.createdtime >= now() - interval '24 hour'
它通常是更好地使用SQL標準的'current_date'關鍵字,而不是'now'。 –
謝謝,我不是使用的是Postgres經常ufortunately –
> TIMESTAMP 'yesterday'
爲了方便起見,Postgres的包括幾個硬編碼值作爲special Date/Time inputs。它們包括:
yesterday
today
tomorrow
now
嘗試SELECT TIMESTAMP 'now'
。
例如,下面是一個查詢。
SELECT when_row_created_
FROM customer_
WHERE when_row_created_ > TIMESTAMP 'yesterday'
ORDER BY when_row_created_ DESC
;
這些命令可能不適合生產代碼,但它們在開發中確實很方便。閱讀文檔並做一些練習,以確保您瞭解這些命令的行爲,會話的時區如何影響他們等等。
缺點包括:(a)隱含忽略時區的關鍵問題,以及(b)不是標準的SQL。
出於好奇,爲什麼他們不適合生產代碼? – VillasV
@VillasV首先,它忽略了時區的關鍵問題。隱含地取決於會話的當前時區。最好是明確的,並在你的代碼中指定時區。 –
我有一個消息:ERROR:運營商不存在:BIGINT>時間戳和時區 – Krokodyle
@Krokodyle這個錯誤意味着你的'workorder.createdtime'是'bigint'。您需要將其翻譯爲適當的「日期」或「時間戳」。 –
@IgorRomanchenko我翻譯成日期。有用!感謝您的幫助 – Krokodyle