试图将日期从MySQL中拉出来

时间:2014-05-06 19:46:04

标签: mysql date format

但是我不能格式化它?日期目前以“文本”类型结构保存在数据库中并保存为“1/1/2000”。我正试图将这些信息从数据库中删除,DATE_FORMAT将其提取到'01 / 01/2000'(2位数日和月),但它显示所有日期为12/31/1969?这是我正在使用的查询:

        $query = "SELECT Event_Title, Event_Details, Event_Time, Event_ID, DATE_FORMAT(Start_Date, '%m/%d/%Y') FROM tevents ORDER by Start_Date DESC"; 

我的查询有问题吗?

数据库:

Rows    Start_Date Ascending
1   04/30/2014
1   05/03/2014
1   05/1/2014
1   05/3/2014
3   5/1/2014
1   5/15/2014
1   5/2/2014
2   5/20/2014
1   5/23/2014
1   5/24/2014
5   5/3/2014
3   5/6/2014
1   6/21/2014
1   6/23/2014
1   6/24/2014
1   6/25/2014
1   6/26/2014
1   6/27/2014
1   6/28/2014
1   6/5/2014
1   6/6/2014

2 个答案:

答案 0 :(得分:1)

存储为varcharTEXT的日期会让人感到痛苦,因此最好存储为datedatetime数据类型。

在您的情况下,您需要在执行任何格式之前使用str_to_date()进行转换

$query = "SELECT 
Event_Title, 
Event_Details, 
Event_Time,
Event_ID, 
date_format(str_to_date(Start_Date,'%m/%d/%Y'),'%m/%d/%Y') as Start_Date
FROM tevents 
ORDER by date_format(str_to_date(Start_Date,'%m/%d/%Y'),'%Y-%m-%d') DESC";  

如果它仅用于订购,则无需执行

date_format(str_to_date(Start_Date,'%m/%d/%Y'),'%m/%d/%Y') as Start_Date

您可以直接选择,因为它转换为相同的格式,以便订购所需的。

答案 1 :(得分:0)

如果你把一个问题放入封闭的信封并交给邻居,他为什么不回答你?

'Text'表示'不要为MySQL的内容烦恼',它通常不关心内容。如果你使用DATE数据类型,事情变得更容易阅读(和排序工作,范围,where-clauses ......)并且写作有点困难 - 你应该将日期格式化为'2014表格程序代码中的“05-01”。