【问题标题】:How to separate DATE and TIME from DATETIME in MySQL?如何在 MySQL 中将 DATE 和 TIME 与 DATETIME 分开
【发布时间】: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,因为如果您正在寻找时间,它将为您提供默认日期,如果您正在寻找日期,它将为您提供默认时间,请参阅我的回答如下。

标签: php mysql sql 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 不客气。最好的事情是您可以将其格式化为您想要的任何形式。
  • @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 的 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2017-06-15
    • 2012-08-13
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多