MySQL獲取時間進行比較

hello! 好久沒有來寫東西了,疫情期間,大家還好嗎?

  1. 今天博主給大家帶來一個比價簡單卻又比較適用的一個sql
    在系統項目中,往往都會需要進行數據的統計,統計條件查詢必不可少,但是在統計中,時間的查詢相對於其他的數據來說是比較難寫一點點的,這裏給大家送一個獲取多少年前,多少年內,多少年的數據查詢的一個生氣了。
  2. 在網上查詢時間片段的SQL確實很多,但多少都有點性能的差別(當然,也不乏有好的),我這裏使用的是一個SQL中的不常用的流程控制語句進行獲取時間
  3. 要求是這樣的,表中有兩個時間片段,要求如果A時間存在,B時間存在,就以B時間爲準,如B不存在,就以A爲準,剛開始確實難爲寶寶了,但是憑着一杯茶,一包煙,一行代碼看一天的精神(開玩笑的了,就找SQL啊,查資料什麼的)終於找到了一個方法,用if判讀進行控制SQL流程,查詢最後的數據
  4. 要求已經明確了,下面就上代碼了:
 SELECT A,B FROM TABLE_A WHERE IF(
		A IS NOT NULL,
		A>=DATE_SUB(NOW(),INTERVAL 5 YEAR),
		B>=DATE_SUB(NOW(),INTERVAL 5 YEAR)
)
  1. 這就是獲取5年前的數據(包括5年)其中的if是一個流程判讀的語句,直接跟在where後面就行,同時也可添加其他的where條件,NOW()是獲取系統當前是時間的一個函數,對於DATE_SUB()函數的使用可以查看W3C
    上的介紹,獲取正確的使用方法
  2. 獲取多少年內的話,直接將>=換成<=等於的就可以了對於獲取指定年內的話可以看看博主這裏的方法,也可看看CSDN上其他的方法(因爲博主也不知道,自己寫的好不好,這個方法,同時網上也有很多,很容易就找到)
SELECT A,B FROM TABLE_A WHERE IF(
		A IS NOT NULL,
		YEAR(A)  = YEAR(DATE_SUB(NOW(),INTERVAL 5 YEAR)),
		YEAR(B)  = YEAR(DATE_SUB(NOW(),INTERVAL 5 YEAR))
  1. 這也很簡單吧!
    好了,這次就到這裏了,如果有不對的地方歡迎指正

轉記得帶鏈接哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章