sql獲得當(dāng)前時(shí)間以及SQL比較時(shí)間大小詳解
1. MySQL
1) MySQL中提供了NOW()函數(shù),用于取得當(dāng)前的日期時(shí)間,NOW()汗水、SYSDATE()、CURRENT_TIMESTAMP()等別名如下:
SELECT NOW(), SYSDATE(), CURRENT_TIMESTAMP
2) 如果想得到不包括時(shí)間部分的當(dāng)前日期,則可以使用CURDATE()函數(shù),CURDATE()函數(shù)還有CURRENT_DATE等別名。如下:
SELECT CURDATE(), CURRENT_DATE
3) 如果想得到不包括日期部分的當(dāng)前時(shí)間,則可以使用CURTIME()函數(shù),CURTIME()函數(shù)還有CURRENT_TIME等別名
SELECT CURTIME(), CURRENT_TIME
2.Oracle
在Oracle中沒(méi)有提供取得當(dāng)前日期時(shí)間的函數(shù),不過(guò)我們可以到系統(tǒng)表DUAL中查詢SYSTIMESTAMP的值來(lái)得到當(dāng)前的時(shí)間戳。如下:
SELECT SYSTIMESTAMP FROM DUAL
同樣,我們可以到系統(tǒng)表DUAL中查詢SYSDATE的值來(lái)得到當(dāng)前日期時(shí)間。如下:
SELECT SYSDATE FROM DUAL
同樣,在Oracle中也沒(méi)有專門提供取得當(dāng)前日期、當(dāng)前時(shí)間的函數(shù),不過(guò)我們可以將SYSDATE的值進(jìn)行處理,這里需要借助于TO_CHAR()函數(shù),這個(gè)函數(shù)會(huì)在后面的章節(jié)中詳細(xì)介紹,這里只介紹它在日期處理方面的應(yīng)用。
使用TO_CHAR(時(shí)間日期值, 'YYYY-MM-DD')可以得到日期時(shí)間值的日期部分,因此下面的SQL語(yǔ)句可以得到當(dāng)前的日期值:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL
使用TO_CHAR(時(shí)間日期值,'HH24:MI:SS')可以得到日期時(shí)間值的時(shí)間部分,因此下面的SQL語(yǔ)句可以得到當(dāng)前的時(shí)間值:
SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL
比較字符串類型的時(shí)間大小
數(shù)據(jù)庫(kù)中的時(shí)間是varchar類型的,MySql使用CURDATE()來(lái)獲取當(dāng)前日期,SqlServer通過(guò)GETDATE()來(lái)獲取當(dāng)前日期
1. 直接使用字符串來(lái)比較
注意:要保證兩個(gè)數(shù)據(jù)的類型完全相同,否則異常
比如A:"2016-09-01",如果B數(shù)據(jù)是:"2016-9-2",那么無(wú)法進(jìn)行比較
2. 通過(guò)類型轉(zhuǎn)換函數(shù)convert(),
注意:要保證字符串的時(shí)間值正確,否則異常,
比如“2016-2-30”,2月沒(méi)有30號(hào),所以在轉(zhuǎn)換的時(shí)候就會(huì)異常
CONVERT (<data_ type>[ length ], <expression> [, style])
1)data_type為SQL Server系統(tǒng)定義的數(shù)據(jù)類型,用戶自定義的數(shù)據(jù)類型不能在此使用。
2)length用于指定數(shù)據(jù)的長(zhǎng)度,缺省值為30。
3)用CONVERT() 函數(shù)的style 選項(xiàng)能以不同的格式顯示日期和時(shí)間。style 是將DATATIME 和SMALLDATETIME 數(shù)據(jù)轉(zhuǎn)換為字符串時(shí)
所選用的由SQL Server 系統(tǒng)提供的轉(zhuǎn)換樣式編號(hào),不同的樣式編號(hào)有不同的輸出格式。如果用這種方法來(lái)判斷某一個(gè)字段的話,
則存入的日期字段的字符串格式只要是能讓sql server完成對(duì)日期的轉(zhuǎn)換就可以了,而不一定要像第一種方法中的那樣嚴(yán)格。
還是說(shuō)adddate字段,比如要比較它是否大于當(dāng)前的日期,就可以這樣寫:where (CONVERT(varchar, adddate) >= CONVERT(varchar, GETDATE()))
。
select convert(varchar(10),getdate(),120) --獲取當(dāng)前日期 SELECT CONVERT(DATE,GETDATE(),110) --獲取當(dāng)前日期 SELECT CONVERT(DATETIME,GETDATE(),110) --獲取當(dāng)前時(shí)間日期 SELECT CONVERT(VARCHAR(50),GETDATE(),108) --獲取當(dāng)前時(shí)刻
我的應(yīng)用場(chǎng)景:
select * from jy_card where (SELECT CURDATE())< end_date and end_date is not null
總結(jié)
到此這篇關(guān)于sql獲得當(dāng)前時(shí)間以及SQL比較時(shí)間大小的文章就介紹到這了,更多相關(guān)sql獲得當(dāng)前時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL通過(guò)觸發(fā)器解決數(shù)據(jù)庫(kù)中表的行數(shù)限制詳解及實(shí)例
這篇文章主要介紹了MySQL通過(guò)觸發(fā)器解決數(shù)據(jù)庫(kù)中表的行數(shù)限制詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04MySQL內(nèi)連接和外連接及七種SQL?JOINS的實(shí)現(xiàn)
這篇文章主要介紹了Mysql內(nèi)連接和外連接的區(qū)別以及七種SQL?Joins的實(shí)現(xiàn),相信看完這篇文章你對(duì)SQL內(nèi)外連接的多表查詢就足夠理解了,需要的朋友可以參考下2023-03-03mysql 替換字段部分內(nèi)容及mysql 替換函數(shù)replace()
這篇文章主要介紹了mysql 替換字段部分內(nèi)容及mysql 替換函數(shù)replace()的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-02-02MySQL數(shù)據(jù)庫(kù) Load Data 多種用法
這篇文章主要介紹MySQL數(shù)據(jù)庫(kù)中 Load Data 數(shù)據(jù)的幾種種用法,需要的朋友可以參考下面文章的解說(shuō)2021-08-08mysql日常使用中常見(jiàn)報(bào)錯(cuò)大全
MySQL初學(xué)者新安裝好數(shù)據(jù)庫(kù)及使用過(guò)程中經(jīng)常遇到以下幾類錯(cuò)誤,本文給大家詳細(xì)整理并給出完美解決方案,感興趣的朋友跟隨小編一起看看吧2023-03-03詳解MySQL中Order By排序和filesort排序的原理及實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了MySQL的Order By排序的底層原理與filesort排序,以及排序優(yōu)化手段,文中的示例代碼講解詳細(xì),感興趣的小編可以跟隨小編一起學(xué)習(xí)一下2022-08-08