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