sqlserver和oracle中對datetime進行條件查詢的一點區(qū)別小結(jié)
更新時間:2009年06月18日 22:31:07 作者:
系統(tǒng)中涉及公文列表的部分,需要支持對時間列的搜索功能,但必須要同時支持sqlserver和oracle兩種數(shù)據(jù)庫,而這在這兩種數(shù)據(jù)庫中編寫查詢語句的時候有一些不大一樣的地方,無法實現(xiàn)一條語句實現(xiàn)兩個數(shù)據(jù)庫的正常查詢,所以需要做一些調(diào)整。
首先,看一下sql server,之前我們都通過前臺用戶選擇一個起始時間和一個結(jié)束時間(以日為最小單位),然后來作為條件進行查詢,如果直接通過”between starttime and endtime”來作為條件的話,發(fā)現(xiàn)會自動將”2009-06-17”轉(zhuǎn)化為” 2009-06-17 00:00:00”,于是如下查詢條件” between ‘2009-06-16' and ‘2009-06-17'”,只能得到16日的數(shù)據(jù),17日的數(shù)據(jù)不能得到,如果想連17日的數(shù)據(jù)也查到的話,我們可以對用戶選擇時間進行一下處理:可以為其添加詳細的時間條件,如” between ‘2009-06-16 00:00:00' and ‘2009-06-17 23:59:59'”;或者干脆去巧地將結(jié)束時間替換為下一天的日期也可,但是這樣需要我們對遞增日期做一下特殊處理,因為我們可能遇到選擇當月最后一日的情況,詳細的處理這里就不贅述了。
下面談?wù)刼racle數(shù)據(jù)庫中的處理,同樣是上面兩種方式,但是如果采取精確時間的方式的話,我們需要通過oracle的數(shù)據(jù)庫時間函數(shù)進行處理,相對比較繁瑣,如果直接通過遞增結(jié)束日期的方式或許更便捷一些,當然,只能適應(yīng)所選日期最小單位為“日”的情況。還有一點需要說明的是,oracle中采取的日期字符串格式和sql server是不一樣的,一般為”5-6月-09”這樣的形式,這就需要我們將獲取的時間格式做一下中間轉(zhuǎn)換,否則語句將不能正常執(zhí)行,當然,我們同樣可以通過數(shù)據(jù)庫函數(shù)來進行處理,但相對比較復(fù)雜一些。
其實,有的時候,對很多問題來說,我們可以采取比較正規(guī)的方法來處理,但是,如果在需求限定的范圍內(nèi)有一些雖然有所局限,但可以完全滿足需求的實現(xiàn)方法,我覺得還是可以大膽地區(qū)用的,因為我們編程的終極目的終究是:用最簡單的方式達到目的,凡事不能太過死板,這個過程其實也是提高我們對項目需求的理解,最后,就是需要注意我們抄小路必須要回避的一些問題,千萬不能太過大意哦。
下面談?wù)刼racle數(shù)據(jù)庫中的處理,同樣是上面兩種方式,但是如果采取精確時間的方式的話,我們需要通過oracle的數(shù)據(jù)庫時間函數(shù)進行處理,相對比較繁瑣,如果直接通過遞增結(jié)束日期的方式或許更便捷一些,當然,只能適應(yīng)所選日期最小單位為“日”的情況。還有一點需要說明的是,oracle中采取的日期字符串格式和sql server是不一樣的,一般為”5-6月-09”這樣的形式,這就需要我們將獲取的時間格式做一下中間轉(zhuǎn)換,否則語句將不能正常執(zhí)行,當然,我們同樣可以通過數(shù)據(jù)庫函數(shù)來進行處理,但相對比較復(fù)雜一些。
其實,有的時候,對很多問題來說,我們可以采取比較正規(guī)的方法來處理,但是,如果在需求限定的范圍內(nèi)有一些雖然有所局限,但可以完全滿足需求的實現(xiàn)方法,我覺得還是可以大膽地區(qū)用的,因為我們編程的終極目的終究是:用最簡單的方式達到目的,凡事不能太過死板,這個過程其實也是提高我們對項目需求的理解,最后,就是需要注意我們抄小路必須要回避的一些問題,千萬不能太過大意哦。
相關(guān)文章
SQL中case?when?then?else?end用法實例
CASE WHEN THEN ELSE END是一個固定搭配,這樣排列是想把通過格式把邏輯展示出來,CASE告訴計算機接下來是條件句式了,下面這篇文章主要給大家介紹了關(guān)于SQL中case?when?then?else?end用法的相關(guān)資料,需要的朋友可以參考下2023-02-02
使用SQL語句查詢MySQL,SQLServer,Oracle所有數(shù)據(jù)庫名和表名,字段名
本文例出了使用SQL語句查詢MySQL,SQLServer,Oracle所有數(shù)據(jù)庫名和表名的SQL語句,有需要的可以參考下2018-03-03
利用DataSet部分功能實現(xiàn)網(wǎng)站登錄
這篇文章主要介紹了利用DataSet部分功能實現(xiàn)網(wǎng)站登錄 ,需要的朋友可以參考下2017-05-05
SQL中where子句與having子句的區(qū)別小結(jié)
這篇文章主要給大家介紹了關(guān)于SQL中where子句與having子句的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2018-12-12
面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫現(xiàn)狀及問題小結(jié)
全密態(tài)數(shù)據(jù)庫,顧名思義與大家所理解的流數(shù)據(jù)庫、圖數(shù)據(jù)庫一樣,就是專門處理密文數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng),這篇文章主要介紹了面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫,未來GaussDB會將該能力逐步開源到openGauss,與社區(qū)共同推進和完善全密態(tài)數(shù)據(jù)庫解決方案,一起打造數(shù)據(jù)庫安全生態(tài)2024-02-02
dbeaver工具連接達夢數(shù)據(jù)庫的完整步驟
DBeaver數(shù)據(jù)庫連接工具是我用了這么久最好用的一個數(shù)據(jù)庫連接工具,擁有的優(yōu)點,支持的數(shù)據(jù)庫多、快捷鍵很贊、導(dǎo)入導(dǎo)出數(shù)據(jù)非常方便,下面這篇文章主要給大家介紹了關(guān)于dbeaver工具連接達夢數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2023-05-05
程序員應(yīng)該知道的數(shù)據(jù)庫設(shè)計的兩個誤區(qū)
在幾乎所有的企業(yè)級應(yīng)用程序中,包括各種MIS、ERP、CRM等等,都會使用數(shù)據(jù)庫,這樣的好處是顯而易見的,很容易地實現(xiàn)了數(shù)據(jù)層和業(yè)務(wù)邏輯層的分離,而且對于性能的優(yōu)化也在一定程度上提供了便利。2010-07-07

