關(guān)于postgresql?timestamp時間戳問題
postgresql timestamp時間戳
數(shù)據(jù)庫的表中有一個update_time的時間戳字段,在新增或修改數(shù)據(jù)時要自動獲取當前時間,而不是代碼中手動傳入時間。
postgresql 和mysql的區(qū)別
根據(jù)調(diào)研在mysql中支持當前時間戳的配置CURRENT_TIMESTAMP
此時改表的結(jié)果是
而postgresql 不支持該配置,即使配置CURRENT_TIMESTAMP也不會觸發(fā)更新和創(chuàng)建事件
解決方案
postgresql只能采用觸發(fā)器的形式進行操作。
創(chuàng)建觸發(fā)器流程:
-- 創(chuàng)建觸發(fā)函數(shù) -- CREATE OR REPLACE FUNCTION update_modified_column() RETURNS TRIGGER AS $$ BEGIN NEW.update_time = now(); RETURN NEW; END; $$ language 'plpgsql'; -- 創(chuàng)建觸發(fā)器 on 后面是對應(yīng)數(shù)據(jù)庫的表名-- CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON area FOR EACH ROW EXECUTE PROCEDURE update_modified_column();
查詢觸發(fā)器
-- 查詢所有觸發(fā)器 -- SELECT * FROM pg_trigger; -- 查詢所有觸發(fā)函數(shù) -- select * from pg_proc;
postgresql timestamp相減
如果是按相差24小時就算1天的話,直接用兩個timestamp值相減得到一個interval值,然后獲得此interval值的天數(shù)部分即可
如下:
select date_part('day', '2015-01-15 17:05'::timestamp - '2013-01-14 16:05'::timestamp);
如果要按timestamp的日期部分做相差天數(shù),則可以轉(zhuǎn)成date值,然后直接相減
如下:
select ('2015-01-15 17:05'::timestamp)::date - ('2015-01-14 19:05'::timestamp)::date;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
PostgreSQL+GeoHash地圖點位聚合實現(xiàn)代碼
這篇文章主要介紹了PostgreSQL+GeoHash地圖點位聚合,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07postgresql 中的 like 查詢優(yōu)化方案
這篇文章主要介紹了postgresql 中的 like 查詢優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSQL流復(fù)制參數(shù)max_wal_senders的用法說明
這篇文章主要介紹了PostgreSQL流復(fù)制參數(shù)max_wal_senders的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12PostgreSQL?16?新特性之正態(tài)分布隨機數(shù)函數(shù)的示例
這篇文章主要介紹了PostgreSQL?16?新特性之正態(tài)分布隨機數(shù)函數(shù),PostgreSQL 16 新增了一個內(nèi)置的 random_normal() 函數(shù),用于生成這種隨機數(shù),通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-01-01