Mysql

如何從日期中刪除前導零

  • April 29, 2015

我有一個查詢,其中我使用了以下內容

date_add(DATE_FORMAT(ss.week_startdate,'%y-%m-%d'),INTERVAL (tt.day_id- 1 )DAY) as date

欄位的數據類型是datetime,結果日期是這樣的

2015-04-06

但想要的結果是這樣的

2015-04-6

我不需要0在白天。我試過這個

date_add(DATE_FORMAT(ss.week_startdate,'%y-%m-%e'),INTERVAL (tt.day_id- 1 )DAY) as date

但沒有用。任何人都可以幫忙嗎!

您的功能應用順序錯誤。您需要先進行日期算術(date_add,無論如何)並應用format最後一個:

DATE_FORMAT( DATE_ADD(ss.week_startdate, INTERVAL (tt.day_id - 1) DAY),
            '%Y-%m-%e')

您還需要%Y4 位數的年份,而不是%y.


另請注意,最好也更改第一個查詢,因為它會執行很多冗餘操作:

date_add(
   DATE_FORMAT(ss.week_startdate,'%y-%m-%d'),
               INTERVAL (tt.day_id- 1 )DAY
              )
as date
  • 首先,它計算:DATE_FORMAT(ss.week_startdate,'%y-%m-%d')

它將日期時間值轉換為具有格式的字元串(例如目前日期,2015 年 4 月 28 日):'15-04-28'

  • 然後,它確實:date_add( previous_result, INTERVAL (tt.day_id-1) DAY)

但是 theprevious_result是一個字元串,所以它必須被轉換為dateor datetime。2 年格式不會導致錯誤的日期只是偶然的。在此轉換之後,date_add()計算 ,因為第一個參數(轉換之後)是 adate並且您只添加天,而不是小時或更小的單位,結果也是 a date

  • 然後,as day考慮了 ,但這沒有任何作用,因為之前的操作也導致了date
  • 最後,結果以日期的預設格式顯示,(又一次意外!)是%Y-%m-%d,以獲得想要的格式。

總共需要三個轉換 ( datetime -> char -> date -> char),而您只需要一個。

引用自:https://dba.stackexchange.com/questions/99026