如何在 MySQL 中将 DATE 和 TIME 与 DATETIME 分开

Posted

技术标签:

【中文标题】如何在 MySQL 中将 DATE 和 TIME 与 DATETIME 分开【英文标题】:How to separate DATE and TIME from DATETIME in MySQL? 【发布时间】:2012-09-02 11:08:22 【问题描述】:

我将 DATETIME 字段存储在表中。每个值看起来像这样: 2012-09-09 06:57:12 .

我正在使用这种语法:

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

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

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

【问题讨论】:

可能您正在寻找 DATE_FORMAT 而不是 DATETIME,因为如果您正在寻找时间,它将为您提供默认日期,如果您正在寻找日期,它将为您提供默认时间,请参阅我的回答如下。 【参考方案1】:

您可以使用 DATE_FORMAT() 来实现这一点(点击链接了解更多其他格式

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

SQLFiddle Demo

【讨论】:

嗨,如何获得价值?我可以使用echo DATEONLY 打印日期和echo TIMEONLY 打印时间吗?还是什么?? @MissRosy 是的,您可以使用他们的别名(例如 DATEONLY 和 TIMEONLY)来获取您想要的值。 @MissRosy click the link for demonstration @MissRosy 不客气。最好的事情是您可以将其格式化为您想要的任何形式。 @John..yes..我喜欢那个东西 :)【参考方案2】:

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

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

【讨论】:

很高兴知道这项工作的比较符合预期,例如SELECT * FROM sales WHERE TIME(sold_at_utc) >= '12:00:00'; - 在中午之后记录销售,无论日期如何。【参考方案3】:

试试:

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

【讨论】:

这不会得到DATETIME 仅作为用户的要求。它将给出整个日期和时间及其默认值。 SELL THIS LINK 它将为 DATE 生成 September, 09 2012 00:00:00-0400 并为 TIME 生成January, 01 1970 03:20:38-0500 好吧,根据查询,它给出 2012-09-09 作为 date_part 和 06:57:12 作为 mysql 中的时间部分 @Sudhir..非常感谢您的回复。这也是正确的,但是..使用DATE_FORMAT()让你更灵活。 @MissRosy 欢迎您,是的,您应该使用最适合且更灵活的解决方案.. :)【参考方案4】:

简单地说, 选择时间(列名),日期(列名)

【讨论】:

DATE 怎么样?【参考方案5】:

一个简单的方法是:

日期:

SELECT DATE(column_name) as mydate

时间:

SELECT DATE(column_name) as mytime

【讨论】:

【参考方案6】:

仅供日期使用date("Y-m-d");

仅供时间使用date("H:i:s");

【讨论】:

嘿,你给的是 php 的解决方案而不是 sql 的 :)

以上是关于如何在 MySQL 中将 DATE 和 TIME 与 DATETIME 分开的主要内容,如果未能解决你的问题,请参考以下文章

如何在 db2 中将日期和时间组合成时间戳?

当我通过 JSON 获取输入时,如何在 Ibatis 中将 java.util.Date 映射到 MySql Date

如何在MySQL DATETIME字段中存储DATE / TIME / YEAR?

如何在javascript中将给定的日期和时间转换为纪元时间?

如何在 MySQL 中将字符串转换为日期?

怎样在MySQL中操作日期