MySQL date format

前端 未结 5 648
礼貌的吻别
礼貌的吻别 2020-11-29 08:06

When I make a table and create a field of type date in mysql, it stores date like 0000-00-00. Is it possible to change the format to \'d-m-Y\'?

相关标签:
5条回答
  • 2020-11-29 08:15

    No, it's not possible. But you can use DATE_FORMAT to select that way.

    SELECT Date_format(mydatefield, '%d-%m-%Y') 
    FROM   table 
    
    0 讨论(0)
  • 2020-11-29 08:15

    I see the use for both, but I find this layout more useful as a reference tool:

    SELECT DATE_FORMAT('2004-01-20' ,'%Y-%m-01');
    

    0 讨论(0)
  • 2020-11-29 08:21

    Go to MySQL Reference - 10.5. Data Type Storage Requirements

    Search for: Storage Requirements for Date and Time Types

    Dates are internally stored as A three-byte integer packed as DD + MM×32 + YYYY×16×32

    But, if you select a date column for display, it has to be shown in some way, so it comes out as 0000-00-00. It is not stored as a char(10) with that specific format.

    If, for display, you need to see a specific format, you can convert it to VARCHAR in a specific format using Date_Format(). However, bear in mind that if you are using the query in a programming tool, this is not what you want to do. You want the raw date value, for display purposes, there will be a similar formatting function from whatever programming environment you use.

    As you can see from the reference in DATE_FORMAT, you will want to use '%d-%m-%Y', e.g.

    SELECT col1, col2, DATE_FORMAT(datecolumn, '%d-%m-%Y') AS datecolumn, more1...
    FROM sometable
    ....
    
    0 讨论(0)
  • 2020-11-29 08:22

    No, it's not possible while keeping it as a date field. I suggest you keep it in that format - so you can use all mysql date functions - and change it only when you display it to the users.

    You can either do it application side or directly with a query:

    SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...
    
    0 讨论(0)
  • 2020-11-29 08:25

    You can do this using SQL

    SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...
    

    Or if you're using PHP you can achieve the same results:

    echo date('d-m-Y', $originalDate);  //You will get something like 09-08-2013 (Aug 8th, 2013)
    echo date('j-n-y', $originalDate);  //You will get something like 9-8-13 (Aug 8th, 2013)
    
    0 讨论(0)
提交回复
热议问题