最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql下關于時間范圍的between查詢方式

 更新時間:2023年07月28日 10:36:48   作者:指尖過客  
這篇文章主要介紹了MySql下關于時間范圍的between查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MySql下時間范圍的between查詢

MySql下Between的范圍界限

mysql的between and 是包含左右界限的。

即time between startdate and enddate等價于time>=startdate and time<=enddate;

關于localdatetime

jdk1.8 提供的時間類使用起來很方便,特別是查詢上一個月,上一分鐘一類的。

其中有個方法是返回一天的開始時間和結束時間:

LocalDateTime.of(lastDay, LocalTime.MAX)

它的最大值默認是小數點后9個9,就是:2021-03-8T23:59:58.999999999,結合mysql+between and 就會把第二天0點的數據也查出來,這顯然是不符合我們的需求的。

原因是精度超過5個9之后就會進位。

所以在處理的時候,入參可以減1秒就正好。

MySql between日期邊界的問題留意

邊界問題 

mysql, between 開始日期 AND 結束日期  包含開始日期,不包含結束日期

例如:

BETWEEN '2018-01-22' AND? '2018-01-30'

開始日期從2018-01-22 00:00:00.0 開始, 到2018-01-29 23:59:59.59結束

表中的CREATE_DATE 是varchar(21) DEFAULT NULL COMMENT '時間',

CREATE_DATE中保存值是: 年-月-日  時:分:秒:0     例如: 2018-01-29 23:45:35.0

SELECT *? FROM? Test? a WHERE? a.CREATE_DATE BETWEEN '2018-01-22' AND? '2018-01-30'? ?ORDER BY a.CREATE_DATE desc

SELECT * ?FROM TABEL a WHERE ?a.CREATE_DATE BETWEEN '2018-01-22' AND ?'2018-01-30' ??
ORDER BY a.CREATE_DATE desc

    2018-01-29 23:45:35.0    20180129
    2018-01-29 23:45:33.0    20180129

    2018-01-29 00:10:58.0    20180129
    2018-01-29 00:10:45.0    20180129
    2018-01-28 23:42:23.0    20180128
    2018-01-28 23:39:39.0    20180128

SELECT * ?FROM TABEL a WHERE ?a.CREATE_DATE BETWEEN '2018-01-22' AND ?'2018-01-29' ??
ORDER BY a.CREATE_DATE desc

    2018-01-28 23:42:23.0    20180128
    2018-01-28 23:39:39.0    20180128
    2018-01-28 00:13:22.0    20180128
    2018-01-28 00:13:19.0    20180128
    2018-01-27 23:23:02.0    20180127
    2018-01-22 00:09:59.0    20180122
    2018-01-22 00:09:56.0    20180122
    2018-01-22 00:01:53.0    20180122

遇到的其他問題

遇到另外一張表  test2     有保存時間的字段:  `REPORTTIME` varchar(45) DEFAULT NULL,

這個字段保存的值是: 

例子1:

select *? from bips_hpd_helpdesk a WHERE? str_to_date(from_unixtime(a.REPORTTIME,'%Y-%m-%d'),'%Y-%m-%d')
?? ??? ?BETWEEN '2018-01-16' AND '2018-01-27' ORDER BY from_unixtime(a.REPORTTIME,'%Y-%m-%d') DESC ;

結果1:

從結果中,可以看到取到了27號的數據,可能是處理的時間沒有 小時,分鐘,秒。

例子2:

select *? from bips_hpd_helpdesk a WHERE? str_to_date(from_unixtime(a.REPORTTIME,'%Y-%m-%d'),'%Y-%m-%d')
BETWEEN str_to_date('2018-01-16','%Y-%m-%d') AND str_to_date('2018-01-27','%Y-%m-%d')

結果2:

找到問題: 毫秒值轉換為時間,發(fā)現(xiàn)這里保存的毫秒值,沒有保存時分秒:

from_unixtime(a.REPORTTIME,'%Y-%m-%d') AS reportTime,a.REPORTTIME,  
             str_to_date(from_unixtime(a.REPORTTIME,'%Y-%m-%d'),'%Y-%m-%d %h:%i:%s') AS reportTime22
        FROM test  a WHERE  str_to_date(from_unixtime(a.REPORTTIME,'%Y-%m-%d'),'%Y-%m-%d %h:%i:%s')
        BETWEEN str_to_date('2018-01-16','%Y-%m-%d %h:%i:%s') AND str_to_date('2018-01-27 %h:%i:%s','%Y-%m-%d')
     #subdate(curdate(),date_format(curdate(),'%w')-1) AND subdate(curdate(),date_format(curdate(),'%w')-8)
        ORDER BY from_unixtime(a.REPORTTIME,'%Y-%m-%d') DESC ;

查看到的時間值:

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

利津县| 略阳县| 阆中市| 安图县| 洪雅县| 宜君县| 都江堰市| 双城市| 新绛县| 阳泉市| 金山区| 濮阳市| 泗阳县| 玉田县| 玛曲县| 固原市| 四川省| 崇仁县| 体育| 福清市| 公主岭市| 安宁市| 宝清县| 兴宁市| 米泉市| 新巴尔虎左旗| 中西区| 慈利县| 维西| 嘉定区| 婺源县| 大渡口区| 怀安县| 黑山县| 龙口市| 龙山县| 青神县| 广安市| 思茅市| 保山市| 罗甸县|