我创建了一个将非标准日期存储到数据库中的系统。对于用户创建的每一篇帖子,都会使用以下格式存储日期:月、日、年,即2012年9月15日。我不认为MySQL有办法组织这些数据,所以我必须手动这样做。
我想不出办法来做这件事。
请帮帮我,谢谢
对现有内容进行排序将非常困难。月份是第一个,但它是一个阿尔法,不能这样排序。天是第二天,年是最后一天。
使用MySQL的DATETIME
或TIMESTAMP
字段类型会更好。至少,您可以使用INT(10)
将其存储在unix时间戳中,并进行数字排序。
我已经使用unix时间戳方法很多年了,但我正在慢慢地切换到TIMESTAMP
,因为您可以使用MySQL的原生日期格式做更多的工作。额外的好处是,您实际上可以查看和理解phpMyAdmin中的日期,而不必不断地编写FROM_UNIXTIME(字段)。当你建立连接时,你只需要告诉MySQL你在哪个时区操作(如果使用TIMESTAMP
)。
您应该能够使用strtotime轻松地转换您所拥有的内容。如果找不到,它将返回FALSE
。这个过程的顺利程度取决于你是否对日期进行了消毒。如果没有,您可以使用preg_replace进行一些清理。
转换完数据库中的数据后,您可以使用PHP的日期函数或MySQL的date_FORMAT来显示它。
无论你选择做什么,都要避免在PHP中进行排序。让您的数据库尽可能多地进行排序和获取。
在数据库中创建一个char(12)字段,并以YYYMDD 格式存储数据
fore ex.要存储2012年9月15日,您应该将其转换为20120915
使用这种方法,您可以对其进行排序、重新格式化或重新转换。