Mysql 函數使用記錄(一)——DATEDIFF、CONCAT

來源:互聯網
上載者:User

標籤:null   解決   sel   生日   定義   階段   use   bsp   mysq   

當目前為止呢,個人對Mysql的函數沒有進行過統一的學習使用,都是用到了再去學習。而近日開始學習Linux了,所以為了防止這段時期結束後,將此階段期間遇到的Mysql函數遺忘,開始在此對其做一個簡單的記錄。

昨天下班前朋友呢讓幫忙看一個sql,是關於生日提醒通知的,實際應用中呢是要實現提前一天提醒使用者生日,而sql呢是用來查詢後一天要過生日的使用者。在她原來的sql中用到了CONCAT、DATEDIFF函數,這兩個函數呢我自個兒呢之前是沒有用到過,所以在解決完問題之後在此記錄一下用法及思路。

首先,來看CONCAT和DATEDIFF函數的定義與用法:

  CONCAT() : 用於串連兩個或多個字串。如有任何一個參數為null,則傳回值為null。

  DATEDIFF():返回兩個日期之間的天數。

其次,來看需求:

  查詢出相對當天,後一天要過生日的使用者。

在明確了需求和函數的用法之後我們來看思路:

  1、既然是要查後一天要過生日的使用者,那我們可以簡單看作是查詢生日日期比當前日期大一天的使用者,那麼問題來了,這樣的話只能查詢到當前年、當前月份、當前日期後一天出生的使用者,顯然不符合,那再換種思路,假設所有使用者都在同一年出生,這樣我們擷取生日日期比當前日期大一天的使用者不就可以了^_^~

  2、在1中我們可以看出,這樣看起來好像是沒什麼問題了,但是仔細想想,假如當前日期是12月31號,那後一天(也就是1月1號)過生日的使用者要是按照1的思路能查詢的到嗎?顯然不能。那我們再來看12月31號和1月1號,有沒有想到跨年呢,沒錯,就是跨年,既然這樣,我們將所有使用者生日日期年份替換成當前年跨年後的年份,這樣根據日期間天數為1的條件不就可以篩選出12月31號後一天過生日的使用者了嗎^_^~

最後,我們來看下sql的實現:

  1、替換+組合生日日期:

    替換生日日期年份為當前年:

     CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,‘-%m-%d‘))

    替換生日日期年份為當前年跨年後年份:

     CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,‘-%m-%d‘)) 

  2、處理後生日日期與當前日期間天數:

    普通:

     DATEDIFF(CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,‘-%m-%d‘)),NOW())  

    跨年:

     DATEDIFF(CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,‘-%m-%d‘)),NOW()) 

  3.整合,查詢當前日期後一天要過生日的使用者資訊:

  

SELECT *FROM userWHERE    DATEDIFF(CONCAT(YEAR(NOW()),DATE_FORMAT(birthday,‘-%m-%d‘)),NOW()) = 1OR    DATEDIFF(CONCAT(YEAR(NOW())+1,DATE_FORMAT(birthday,‘-%m-%d‘)),NOW()) = 1

最後:

  DATEDIFF 函數中兩個參數,前一個比後一個大時,值>=0 ,前一個比後一個小時,值<=0

記錄完畢!

Mysql 函數使用記錄(一)——DATEDIFF、CONCAT

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.