如何在MySQL中从DATETIME分离DATE和TIME


82

我将DATETIME字段存储 在表中。每个值如下所示: 2012-09-09 06:57:12

我正在使用以下语法:

   date("Y-m-d H:i:s");

现在我的问题是,在获取数据时,如何使用单个MySQL查询分别获取日期和时间

日期如2012-09-09,时间如06:57:12


也许你正在寻找DATE_FORMAT和不DATETIME,因为它会给你默认的日期,如果你正在寻找的时间和默认的时间,如果你正在寻找日期,看到我的回答如下。
约翰·胡

Answers:


126

您可以使用DATE_FORMAT()来实现(单击链接以获取其他格式

SELECT DATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, 
       DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

SQLFiddle演示


嗨,如何获得价值?我可以echo DATEONLY用于打印日期和echo TIMEONLY时间吗?要不然是啥??
罗西小姐2012年

@MissRosy是的,您可以使用它们的别名(例如DATEONLY和TIMEONLY)来获取所需的值。
约翰·胡


@MissRosy,不客气。最好的办法是将其格式化为所需的任何格式。
John Woo

@ John..yes ..我喜欢那件事:)
Rosy小姐

49

根据mysql文档,DATE()函数将提取日期时间字段的日期部分,并将TIME()作为时间部分。所以我会尝试:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...

17

尝试:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`

这不会得到,DATETIME只会根据用户的要求得到。它将使用默认值给出整个日期和时间。出售此链接
John Woo

1
它会产生September, 09 2012 00:00:00-0400DATEJanuary, 01 1970 03:20:38-0500TIME
吴宇森

4
好吧,根据查询,它在MySQL中将2012-09-09作为date_part和06:57:12作为时间部分
Sudhir Bastakoti 2012年

@Sudhir ..非常感谢您的回复。这也是正确的,但是..usingDATE_FORMAT()使您更加灵活。
罗西小姐2012年

1
@MissRosy欢迎您,是的,您应该使用最适合且更灵活的解决方案。:)
Sudhir Bastakoti 2012年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.