2017-02-10 124 views
1

假設我輸入日期爲「2017-01-31」或「2017-02-28」。我想要輸入此日期並使SQL將其更改爲「2017-01-01」或「2017-02-01」。返回輸入日期的月份開始MySQL

有沒有辦法通過查詢中的MySQL函數來做到這一點?

+0

你做SQL必須改變它?我假設數據庫調用和用戶之間有某種東西。 – SaggingRufus

回答

1

有幾種方法可以做到這一點。我的首選是使用DATE_FORMAT以常數01替換日期部分。

SELECT DATE_FORMAT('2017-01-31','%Y-%m-01') + INTERVAL 0 DAY AS dt 

有很多方法來皮膚那貓。

例如,我們可以減去的整數天數減1 ...

SELECT '2017-01-31' + INTERVAL 1-DAY('2017-01-31') DAY 

(與第二形式,日期值需要提供兩次。隨着第一,我們只需要。提供值一次,我認爲第一種形式是更容易爲將來的讀者瞭解...相當清楚的是作者正打算)

+0

謝謝你,真是太棒了。 – Zeusftw

+0

@Zeusftw:如果你想在本月的最後一天,MySQL提供'LAST_DAY()'函數。不幸的是,沒有FIRST_DAY()函數。在第一個查詢中,'+ INTERVAL 0 DAY'不是絕對必要的。但它確實會導致從'DATE_FORMAT'返回的字符串被轉換回'DATE',這是我們期望從一個函數中返回的函數,該函數讓我們獲得了該月的「第一天」。 – spencer7593

+0

@Zeusftw,如果您對Spencer7593的回答滿意,請將其標記爲已解決 – Mojtaba

0

使用您的日期,而不是我的例子:

SELECT CONCAT_WS('-',YEAR('2017-01-28'),MONTH('2017-01-28'),'01') 
相關問題