免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)類型的比較

最近發(fā)現(xiàn)自己一直以來經(jīng)常用一種錯誤的方法在比較日期,例如一下語句,a字段是一個DATETIME類型的列:

select a from t1 where DATEDIFF(a, '2018-09-11') < 0;

該語句是為了查出2018-09-11 日期之前的所有記錄,但這個語句有個問題,如果a字段加了索引,用這種類型進行日期對比,會導(dǎo)致查詢不走索引,從而使查詢性能下降。

看了Mysql關(guān)于日期字段對比的文檔。在進行日期比較的時候,mysql會自動將日期轉(zhuǎn)換成數(shù)字進行比較。where條件后,使用字符串格式日期與DATE,DATETIME,TIMESTAMP,TIME類型字段進行比較的時候,對字符串格式要求不嚴(yán)格,你可以使用任意格式的分隔符來表示日期,例如"2018-09-11","2018#09#11","2018&09&11"對于mysql來說,都是相同的日期。如果沒有分隔符,例如"20180911",與"2018-09-11"或其他有分隔符的日期,也是相同的。例如下圖

  1. select a from t1 where a < '2018#09#11';
  2. select a from t1 where a < '2018-09-11';
  3. select a from t1 where a < '20180911';
  4. 所代表的意義是相同的,都是查詢?nèi)掌谛∮?018年9月11日的數(shù)據(jù)
  5. 也就是說上圖的查詢語句,完全可以重寫為,這么做的好處?就是會使用索引,是查詢更快
  6. select a from t1 where a < '2018-09-11';

當(dāng)將日期類型字段與字符串型日期進行<,>,>=,<=,between比較的時候,Mysql會將字符串類型日期轉(zhuǎn)換成長整型數(shù)字進行比較,從而加快查詢速度。

下面三種情況除外:

1,兩個表格字段的對比;

2,日期類型字段與表達式對比;

3,使用表達式對日期類型字段進行對比;

原因:對于以上三種情況,mysql會將日期轉(zhuǎn)換為字符串進行比較。

下面的例子,都是可以正常運行的:

  1. INSERT INTO t1 (testdate) VALUES (20180912);
  2. INSERT INTO t1 (testdate) VALUES ('20180912');
  3. INSERT INTO t1 (testdate) VALUES ('18-09-12');
  4. INSERT INTO t1 (testdate) VALUES ('2018.09.12');
  5. INSERT INTO t1 (testdate) VALUES ('2018 09 12');
  6. INSERT INTO t1 (testdate) VALUES ('0000-00-00');
  7. SELECT testdate FROM t1 WHERE testdate >= '2018-09-12';
  8. SELECT testdate FROM t1 WHERE testdate >= 20180912;
  9. SELECT MOD(testdate,100) FROM t1 WHERE testdate >= 20180912;
  10. SELECT testdate FROM t1 WHERE testdate >= '20180912';

Mysql允許存儲"0000-00-00"作為DATE類型的“0”值,也稱之為虛擬日期。在某些場景下比儲存NULL值更便捷。如果將一個不合法的日期值保存到DATE類型字段中,mysql默認存儲為"0000-00-00"。 如果不允許存儲"0"值,請啟用NO_ZERO_DATE參數(shù)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于Mysql的日期類型字段設(shè)置默認值為當(dāng)前日期的解決方案
MySQL數(shù)據(jù)庫常見的數(shù)據(jù)類型
mysql 數(shù)據(jù)庫存時間最好是時間戳還是格式的時間
MYSQL支持的數(shù)據(jù)類型
MySQL里面的時間類型datetime,date,timestamp,time和y
MySQL數(shù)據(jù)庫~~~~初識、基礎(chǔ)數(shù)據(jù)類型
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服