MySQL中的日期和时间是以ISO8601标准处理的。从其中获取时间是相对正常的,但是ISO8601期望输入的日期要首先输入年。例如,2008年3月29日应该输入2008-03-29或08-03-29。在默认的情况下,从MySQL获取日期的顺序也是如此。
根据目标用户不同,我们可能会发现这个函数并不是用户友好的。通常,要在PHP和MySQL之间通信,需要进行日期格式的转换。这可以在其中任一端进行。
当从PHP将日期输入到MySQL时,可以调用前面介绍的date函数轻松地将其转换为适当的格式。需要注意的一个小问题是,在进行操作时应该使用带有前导0格式的日期和月份,这样可以避免在MySQL中造成混乱。可以使用两位数字的年份,但是使用4位年份是一个不错的想法。如果希望在MySQL端进行转换,可以使用两个有用的函数,它们分别是DATE_FORMAT和UNIX_TIMESTAMP。
DATE_FORMAT函数与PHP的同名函数类似,只是使用不同的格式代码。通常,我们最希望做的事情就是以MM-DD-YYYY的形式格式化日期,而不是采用MySQL中固有的ISO格式,也就是YYYY-MM-DD格式。可以通过如下所示的查询代码来完成它:
SELECT DATE_FORMAT(date_column,'%m%d%Y')
FROM tablename;
格式代码%m表示2位数字的月份;%d表示2位数字的日期;而%Y表示4位数字的年份。表21-4列出了更多MySQL支持的实用格式代码。
UNIX_TIMESTAMP函数功能与之类似,但是它可以将一列转换为一个UNIX时间戳。例如:
SELECT UNIX_TIMESTAMP(date_column)
FROM tablename;
将返回已经被格式化成UNIX时间戳的日期。这样,就可以像在PHP中一样处理它。
使用UNIX时间戳,可以很方便执行日期计算和比较操作。但是请记住,时间戳通常可以表示1902年至2038年之间的日期,而MySQL日期类型具有更大的时间范围。
作为一条重要的规则,当只是保存和显示日期的时候,应该使用UNIX时间戳来计算日期和作为标准日期格式。