在我的表中,日期存储如下:2011-03-03T13:30:00
我正在尝试输出这样的日期:2011年3月3日下午1:30
我宁愿将其用于查询而不是使用php来格式化它,但我在做这件事时遇到了一些困难。尝试DATE_FORMAT的各种迭代,但它没有给我我想要的东西,也许是因为它的存储方式?
答案 0 :(得分:9)
在处理日期时,您基本上可能需要执行两种不同的操作:日期到字符串,反之亦然。您可以使用的功能是DATE_FORMAT()
和STR_TO_DATE()
。完整参考可以找到in the manual。
用法示例:
SELECT
DATE_FORMAT(CURRENT_TIMESTAMP, '%d/%m/%Y %H:%i:%s'),
STR_TO_DATE('31/12/2001 23:55:00', '%d/%m/%Y %H:%i:%s')
如果您的日期不是真实日期而是字符串,则需要将两次:从字符串转换为日期,再将日期转换为字符串:
SELECT
STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'),
DATE_FORMAT(STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'), '%M %e, %Y %l:%i %p')
答案 1 :(得分:0)
使用DATE_FORMAT
:
DATE_FORMAT(date, "%M %e, %Y %h:%i %p")
答案 2 :(得分:0)
MySQL日期存储格式实际上是YYYY-MM-DD,但是使用str_to_date()和date_format()函数,您可以接受并生成所需的任何日期格式。
select DATE_FORMAT(DateTable.MyDate,'%d %b %y')
from DateTable
would return
04 Nov 08
答案 3 :(得分:0)
你应该真正使用DATETIME字段来处理这些事情(并在途中清理输入),而不是必须在输出点对它进行排序。
无论如何,您只需使用DATE_FORMAT函数将字段重新格式化为您需要的格式,尽管这可能会在VARCHAR或CHAR字段上产生一些不期望的结果。 (如果是这样,您将不得不使用STR_TO_DATE或者使用某些string functions失败来提取您需要的日期位。)