【发布时间】:2011-07-19 01:43:05
【问题描述】:
当我在 mysql 中创建一个表并创建一个日期类型的字段时,它存储的日期类似于 0000-00-00。是否可以将格式更改为“d-m-Y”?
【问题讨论】:
当我在 mysql 中创建一个表并创建一个日期类型的字段时,它存储的日期类似于 0000-00-00。是否可以将格式更改为“d-m-Y”?
【问题讨论】:
您可以使用 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)
【讨论】:
转到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
....
【讨论】:
不,这是不可能的。但是您可以使用 DATE_FORMAT 来选择这种方式。
SELECT Date_format(mydatefield, '%d-%m-%Y')
FROM table
【讨论】:
不,将其保留为日期字段是不可能的。我建议您保持这种格式 - 这样您就可以使用所有 mysql 日期函数 - 并且仅在向用户显示时更改它。
您可以在应用程序端进行,也可以直接使用查询:
SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...
【讨论】: