如何在 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
而不是 DATE
和 TIME
,因为如果您正在寻找时间,它将为您提供默认日期,如果您正在寻找日期,它将为您提供默认时间,请参阅我的回答如下。
【参考方案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`
【讨论】:
这不会得到DATE
和TIME
仅作为用户的要求。它将给出整个日期和时间及其默认值。 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 分开的主要内容,如果未能解决你的问题,请参考以下文章
当我通过 JSON 获取输入时,如何在 Ibatis 中将 java.util.Date 映射到 MySql Date
如何在MySQL DATETIME字段中存储DATE / TIME / YEAR?