濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > postgresql的now()與Oracle的sysdate區(qū)別說(shuō)明

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

熱門(mén)標(biāo)簽:打電話智能電銷機(jī)器人授權(quán) 地圖標(biāo)注和圖片名稱的區(qū)別 海豐有多少商家沒(méi)有地圖標(biāo)注 合肥公司外呼系統(tǒng)運(yùn)營(yíng)商 重慶自動(dòng)外呼系統(tǒng)定制 外呼調(diào)研系統(tǒng) 辦公外呼電話系統(tǒng) 漯河外呼電話系統(tǒng) 美容工作室地圖標(biāo)注

postgresql的now()為當(dāng)前事務(wù)開(kāi)始時(shí)間,

而Oracle的sysdate是當(dāng)前時(shí)間。

區(qū)別在于事務(wù)。

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在事務(wù)中是一直變化的。

總結(jié):

- postgresql的now()為當(dāng)前事務(wù)開(kāi)始時(shí)間,如果調(diào)用now(),就會(huì)獲取事務(wù)開(kāi)始的時(shí)間,而不是獲取的系統(tǒng)當(dāng)前的時(shí)間。

- Oracle的sysdate是獲取當(dāng)前時(shí)間,啥時(shí)候調(diào)用sysdate,就是啥時(shí)候的時(shí)間。

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

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

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

lz在定位問(wèn)題做業(yè)務(wù)的時(shí)候就遇到了,當(dāng)時(shí),服務(wù)器在lz的電腦上,數(shù)據(jù)庫(kù)在遠(yuǎn)端,因?yàn)闃I(yè)務(wù)需要就把時(shí)間調(diào)到未來(lái)的一個(gè)時(shí)間點(diǎn),然后開(kāi)始做,但是后來(lái)經(jīng)過(guò)了1周左右,偶然發(fā)現(xiàn)了一個(gè)表用的時(shí)間竟然時(shí)當(dāng)前的真是時(shí)間,我就有了這樣的猜測(cè),應(yīng)該有一個(gè)程序員用了sysdate字段.盡管沒(méi)有明顯找到,但是應(yīng)該是用的,不然不會(huì)取到真實(shí)的時(shí)間啊.尤其一些需要遠(yuǎn)程調(diào)試的項(xiàng)目,同事對(duì)于編碼規(guī)范,我覺(jué)得sql的編碼規(guī)范也要把這一條加上去.

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

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

//在dao中這樣寫(xiě)
member(name,pw,register_time)value(?,?,'"+DbAssitor.sdfyyyyMMddHHmmss.format(new Date())+"');";
//數(shù)據(jù)庫(kù)助手類定義一個(gè)sdf類
public class DbAssitor
{
 /** 數(shù)據(jù)庫(kù)相關(guān)操作中操作結(jié)果是沒(méi)有影響行數(shù) ***/
 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");
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL批量update與oracle差異詳解
  • PostgreSQL通過(guò)oracle_fdw訪問(wèn)Oracle數(shù)據(jù)的實(shí)現(xiàn)步驟

標(biāo)簽:錦州 晉城 蚌埠 來(lái)賓 珠海 株洲 烏海 衡陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《postgresql的now()與Oracle的sysdate區(qū)別說(shuō)明》,本文關(guān)鍵詞  postgresql,的,now,與,Oracle,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《postgresql的now()與Oracle的sysdate區(qū)別說(shuō)明》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于postgresql的now()與Oracle的sysdate區(qū)別說(shuō)明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鄂托克旗| 清丰县| 淄博市| 澳门| 黄平县| 通许县| 新蔡县| 新兴县| 金华市| 阿瓦提县| 高陵县| 抚州市| 久治县| 缙云县| 吴堡县| 枣强县| 汉川市| 长白| 新巴尔虎右旗| 新源县| 新昌县| 亚东县| 天祝| 新河县| 嫩江县| 本溪市| 丽水市| 岢岚县| 清河县| 屏东市| 磐石市| 昭通市| 鄂州市| 翁牛特旗| 兰州市| 信宜市| 舒城县| 沙雅县| 武冈市| 西和县| 永定县|