【问题标题】:Retrieving Month from DATE field in MY SQL从 MYSQL 中的 DATE 字段中检索月份
【发布时间】:2013-06-21 10:01:16
【问题描述】:

我使用 DATE TYPE 将出生日期存储在 MY Sql 数据库中, 我需要从以下日期 2012-12-25 检索第 12 个月

我的字段名称是 DOB,我知道检索 MONTH 是,使用查询 MONTH(dob)

但我的问题是我有一个对象和方法 $user->dob 显示特定用户的完整出生日期,但我只需要使用 $user->dob 显示月份,我怎样才能在我的方法和类中做到这一点?诸如 month($user->dob)

之类的东西

【问题讨论】:

  • 日期('n',strtotime($user->dob));

标签: php mysql mysqli phpunit mysqldump


【解决方案1】:

怎么样:

SELECT dob, MONTH(dob) AS month_dob ...

这会给你(大概)$user->month_dob

替代方法是使用(低效的)PHP 端日期操作,例如:

$month = date('n', strtotime($user->dob));

【讨论】:

  • + 提供两个示例,但注意 MySQL 优于 PHP。
  • Marc ..感谢您的反馈.. 你能告诉我为什么第二种方法效率低吗?
  • 从 mysql 中的完整日期中提取一个月是一个非常简单/便宜的操作。在 php 中执行此操作需要 php 执行 string->date(int)->string,以及用于初始 string->date 转换的大量数学运算。当然,您可以使用字符串操作并简单地提取日期字符串的月份部分,但是您可能与 y10k 不兼容。
  • Jason - 你能解释得更具体些吗,你想表达什么?
  • Marc.. 哈哈,谢谢,提供了丰富的信息,不保证 php 和我的 sql 将存在到 10,000 年 :)
【解决方案2】:

使用php日期函数 $month = date('m', strtotime('2012-12-25'));

在你的情况下$month = date('m', strtotime($user->dob));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2021-11-21
    • 2021-10-20
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多