但是我不能格式化它?日期目前以“文本”类型结构保存在数据库中并保存为“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
答案 0 :(得分:1)
存储为varchar
或TEXT
的日期会让人感到痛苦,因此最好存储为date
或datetime
数据类型。
在您的情况下,您需要在执行任何格式之前使用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”。