MySQL日期格式

时间:2011-03-20 09:41:16

标签: mysql date

当我创建一个表并在mysql中创建一个date类型的字段时,它会将日期存储为0000-00-00。是否可以将格式更改为“d-m-Y”?

5 个答案:

答案 0 :(得分:12)

转到MySQL Reference - 10.5. Data Type Storage Requirements

搜索:日期和时间类型的存储要求

日期内部存储为A three-byte integer packed as DD + MM×32 + YYYY×16×32

但是,如果您选择日期列进行展示,则必须以某种方式显示,因此它以0000-00-00发布。它是 存储为具有该特定格式的char(10)。

如果要显示,您需要查看特定格式,可以使用Date_Format()以特定格式将其转换为VARCHAR。但是,请记住,如果您在编程工具中使用查询,则 您要执行的操作。您需要原始日期值,出于显示目的,您将使用与您使用的编程环境类似的格式化函数。

从DATE_FORMAT中的参考资料中可以看出,您需要使用 '%d-%m-%Y' ,例如

SELECT col1, col2, DATE_FORMAT(datecolumn, '%d-%m-%Y') AS datecolumn, more1...
FROM sometable
....

答案 1 :(得分:5)

不,这是不可能的。但是你可以使用DATE_FORMAT来选择那种方式。

SELECT Date_format(mydatefield, '%d-%m-%Y') 
FROM   table 

答案 2 :(得分:2)

不,将它保留为日期字段是不可能的。我建议你保持这种格式 - 所以你可以使用所有mysql日期函数 - 只有在你向用户显示时才更改它。

您既可以在应用程序端执行,也可以直接使用查询:

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

答案 3 :(得分:0)

您可以使用SQL

执行此操作
SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...

或者,如果您使用PHP,您可以获得相同的结果:

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)

答案 4 :(得分:0)

我看到两者的用途,但我发现这种布局作为参考工具更有用:

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

enter image description here