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