佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > postgresql的now()與Oracle的sysdate區(qū)別說明

postgresql的now()與Oracle的sysdate區(qū)別說明

熱門標簽:地方門戶網站 百度競價排名 網站排名優(yōu)化 Linux服務器 鐵路電話系統(tǒng) 呼叫中心市場需求 服務外包 AI電銷

postgresql的now()為當前事務開始時間,

而Oracle的sysdate是當前時間。

區(qū)別在于事務。

postgresql中的now():
postgres=# begin ;
BEGIN
postgres=# select now();
  now  
-------------------------------
 2017-03-31 14:28:32.403869+08
(1 row)
 
postgres=# select now();
  now  
-------------------------------
 2017-03-31 14:28:32.403869+08
(1 row)
 
postgres=# select now();
  now  
-------------------------------
 2017-03-31 14:28:32.403869+08
(1 row)
 
postgres=# end;
COMMIT
 
postgres=# select now();
  now  
-------------------------------
 2017-03-31 14:28:54.917897+08
(1 row)
 
postgres=#

而Oracle中的sysdate在事務中是一直變化的。

總結:

- postgresql的now()為當前事務開始時間,如果調用now(),就會獲取事務開始的時間,而不是獲取的系統(tǒng)當前的時間。

- Oracle的sysdate是獲取當前時間,啥時候調用sysdate,就是啥時候的時間。

補充:mysql中now()函數的使用,還有oracle的sysdate,可能埋下的坑

mysql中now()函數的使用,還有oracle的sysdate

在需求中如果系統(tǒng)中藥添加當前操作的時間那么很簡單的一個操作在寫sql的時候直接在這個字段對應的位置寫上now()函數就可以了,這樣就少些了很多代碼,尤其是在在用jdbc時寫的時候,可以少寫一些關于占位符的代碼,但是這樣做是有一個隱含的前提的是數據庫和服務器是在同一個機器上的,如果不在同一臺機器上,那么這樣寫就是一個坑啊,我覺得沒有經驗,沒有掉進過坑的人就會這樣寫,比如我,偷懶就會這樣寫.等到用到這個時間來比較或者作為業(yè)務邏輯的判斷依據時,這個坑就出現了

lz在定位問題做業(yè)務的時候就遇到了,當時,服務器在lz的電腦上,數據庫在遠端,因為業(yè)務需要就把時間調到未來的一個時間點,然后開始做,但是后來經過了1周左右,偶然發(fā)現了一個表用的時間竟然時當前的真是時間,我就有了這樣的猜測,應該有一個程序員用了sysdate字段.盡管沒有明顯找到,但是應該是用的,不然不會取到真實的時間啊.尤其一些需要遠程調試的項目,同事對于編碼規(guī)范,我覺得sql的編碼規(guī)范也要把這一條加上去.

lz以前不懂也做過這樣的事情,現在只能提醒大家不要這樣做,然后改掉自己最近這樣寫的代碼.

建議用java生成new一個時間對象,如果用的是jdbc直接拼在sql里,可以不要用占位符.

//在dao中這樣寫
member(name,pw,register_time)value(?,?,'"+DbAssitor.sdfyyyyMMddHHmmss.format(new Date())+"');";
//數據庫助手類定義一個sdf類
public class DbAssitor
{
 /** 數據庫相關操作中操作結果是沒有影響行數 ***/
 public static int NO_AFFECT_ROW = 0;
 public static String sdfyyyyMMddHHmmss_ = "yyyy-MM-dd HH:mm:ss";
 public static SimpleDateFormat sdfyyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL批量update與oracle差異詳解
  • PostgreSQL通過oracle_fdw訪問Oracle數據的實現步驟

標簽:蘭州 崇左 銅川 湘潭 黃山 仙桃 衡水 湖南

巨人網絡通訊聲明:本文標題《postgresql的now()與Oracle的sysdate區(qū)別說明》,本文關鍵詞  ;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    卢氏县| 青川县| 庆元县| 读书| 阜康市| 阜新市| 旺苍县| 库伦旗| 金堂县| 饶平县| 邓州市| 嵩明县| 临湘市| 页游| 贡嘎县| 罗城| 阿荣旗| 济阳县| 日照市| 肇庆市| 株洲市| 荥经县| 铜梁县| 璧山县| 祁东县| 广丰县| 玉环县| 伊通| 长沙县| 阿鲁科尔沁旗| 泗水县| 潜江市| 怀柔区| 海丰县| 突泉县| 五华县| 宜君县| 农安县| 商都县| 隆化县| 通城县|