Mysql日期格式和排序

时间:2012-12-27 12:24:44

标签: php mysql datetime

我有一张桌子,约会不标准,需要以某种方式按日期和时间组织行。

job_date    |    job_time
=========================
12/12/2012  |   10.30am  
11/10/2012  |    9.00pm  
14/11/2012  |   11.50pm  

有没有办法在mysql中格式化这些。我查看了DATE_FORMAT()函数,但我发现的示例似乎与我表中的格式无关。

3 个答案:

答案 0 :(得分:2)

SELECT *,STR_TO_DATE(CONCAT(job_date,'',job_time),'Y-m-d H:i:s')AS date_format from table ORDER BY date_format DESC

答案 1 :(得分:2)

关键方法是STR_TO_DATE。 我会给你两个解决方案:

首先:如果您想要更改您的数据库:

SELECT jobdate, STR_TO_DATE(job_time,'%h:%i%p')AS real_job_time FROM yourtable ORDER BY real_job_time;

第二:如果可以修改数据库,请使用TIME格式:

ALTER TABLE yourtable 
    MODIFY COLUMN job_time TIME NOT NULL;
UPDATE yourtable SET job_time = STR_TO_DATE(job_time,'%h:%i%p');

并选择

SELECT jobdate,job_time FROM yourtable ORDER BY job_time

我认为第二种解决方案是迄今为止最好的,而应该选择它。

答案 2 :(得分:0)

显然,将其存储为正确的日期会更好,并且可以更快地进行查询。

SELECT *
FROM table
ORDER BY substr(job_date, -4), substr(job_date, 4, 2), substr(job_date, 1, 2)