1

我有一张表,其中的约会不是标准的,需要按日期和时间以某种方式组织行。

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

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

4

3 回答 3

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

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

于 2012-12-27T12:37:06.417 回答
2

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

于 2012-12-27T12:35:16.980 回答
0

显然,将其存储为正确的日期会好得多,并且会导致更快的查询。

SELECT *
FROM table
ORDER BY substr(job_date, -4), substr(job_date, 4, 2), substr(job_date, 1, 2)
于 2012-12-27T12:29:27.123 回答