当每个项目输入db时,使用以下方法插入日期:
date_default_timezone_set('America/New_York');
ob_start();
$createdon = date('l, F j, Y, h:i A');
ob_get_clean();
输出如下内容:
Tuesday, May 3, 2011, 04:50 PM
这是查询:
select test_id, why_test, date_time
from the_test
where p_id = '$id'
UNION
select pencil_id, pencil_name, date_time
from pencils
where p_id = '$id'
ORDER BY 3 DESC
现在,当我按功能使用订单时,它没有正确执行。日期仍在混淆。我使用了date_time DESC的命令。
我正在使用php / phpmyadmin。
有什么想法吗?
答案 0 :(得分:6)
将日期存储为字符串是错误的。您应该将日期存储为日期。
MySQL有一系列与日期和时间相关的适当类型;我建议使用TIMESTAMP
或DATETIME
(可能是后者;请在手册中查找最适合您的内容)。
为了避免在修复表结构时丢失现有数据:
UNIX_TIMESTAMP
函数 - 这是一次性复制,可能需要一些时间; ORDER BY
将自然地在这个领域工作,因为你现在将使用MySQL,因为它被设计用于。
答案 1 :(得分:2)
尝试
SELECT .... ORDER BY UNIX_TIMESTAMP(`date_time`) DESC
这里的想法是将字符串转换为可以排序的数字。如果您不熟悉unix时间戳,则是自1970年1月1日以来的秒数,因此如果您可以将时间转换为时间,则可以获得一种线性,简便的方法来比较时间。
但我相信MySQL的UNIX_TIMESTAMP()
需要格式为:1970-01-01 00:00:00
但是概念仍然是将日期(甚至存储)作为unix时间戳或MySQL的本机日期类型(如datetime
或timestamp