我有一张桌子,约会不标准,需要以某种方式按日期和时间组织行。
job_date | job_time
=========================
12/12/2012 | 10.30am
11/10/2012 | 9.00pm
14/11/2012 | 11.50pm
有没有办法在mysql中格式化这些。我查看了DATE_FORMAT()函数,但我发现的示例似乎与我表中的格式无关。
答案 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)