新聞中心
日期比較可以說(shuō)是數(shù)據(jù)庫(kù)實(shí)際開發(fā)中最常見的操作之一,但是MSSQL的日期比較卻困擾著很多開發(fā)者。

我們一直強(qiáng)調(diào)網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡(luò)公司不一定是大公司,成都創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
MSSQL的日期格式比較麻煩,因?yàn)槠浔举|(zhì)是datetime類型,包含時(shí)間戳,這樣就會(huì)對(duì)結(jié)果的準(zhǔn)確度造成影響。不管日期之間的差異有多小,查詢結(jié)果都會(huì)是不相等的。如下面的例子,它們?cè)诳雌饋?lái)一模一樣,但實(shí)際比較卻為不等:
select GETDATE()
select GETDATE()
結(jié)果:
2020-03-26 15:23:59.627
2020-03-26 15:24:00.613
這會(huì)導(dǎo)致很多惱人的問題,如果在SQL語(yǔ)句中使用普通表達(dá)式比較兩個(gè)時(shí)間,實(shí)際上計(jì)算的結(jié)果是不準(zhǔn)確的。
此外,另一個(gè)常見的問題就是如何正確比較當(dāng)日日期。一種常用的做法就是將日期轉(zhuǎn)換成字符串類型,例如:
select convert (varchar, getdate(), 10)
上面的語(yǔ)句將查詢出的當(dāng)前日期轉(zhuǎn)換為字符串類型,非常實(shí)用。我們也可以自己編寫擴(kuò)展函數(shù),將datetime類型轉(zhuǎn)換為日期類型,例如:
CREATE FUNCTION dbo.GetDateOnly
(
@date datetime
)
RETURNS date
AS
BEGIN
RETURN CAST(@date AS date)
END
最后,我們還要學(xué)習(xí)如何比較兩個(gè)日期的月份、年份的技巧。這種技巧相對(duì)簡(jiǎn)單,因?yàn)镸SSQL提供了一些內(nèi)置函數(shù)來(lái)支持此類比較,例如:
select DateDiff(month, '2019-01-01', '2019-02-01')
對(duì)于以上易出錯(cuò)的日期比較,我們必須考慮準(zhǔn)確性和可讀性,這樣我們的程序才能正確比較兩個(gè)日期。
總之,MSSQL的日期比較非常困難,但運(yùn)用一些技巧,我們也可以得到準(zhǔn)確的結(jié)果。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
名稱欄目:MSSQL日期比較之謎(mssql日期判斷)
分享URL:http://fisionsoft.com.cn/article/djisdgg.html


咨詢
建站咨詢
