【问题标题】:MySQL check case where a date is 0000-00-00 00:00:00?MySQL 检查日期为 0000-00-00 00:00:00 的案例?
【发布时间】:2015-07-19 09:45:03
【问题描述】:

我有这个 MySQL 查询:

SELECT `date_joined`, `date_last_joined` FROM `users` WHERE `name` = "mary"

date_last_joined 列当前为所有用户的0000-00-00 00:00:00。然后在他们下次登录时更新为当前日期。

所以我的问题是,如果date_last_joined0000-00-00 00:00:00,我将如何返回date_joined,如果不是,我将如何返回date_last_joined?这在 MySQL 查询中是否可行?

原因是在 Java 准备的 MySQL 查询中返回 0000-00-00 00:00:00 会导致各种问题。

【问题讨论】:

  • 只需运行您的查询,因为它会返回正确的结果
  • 如果它对你有帮助,你应该接受答案:)

标签: java mysql date datetime time


【解决方案1】:

你可以使用IF流控操作符:

SELECT IF(`users`.`date_last_joined` = '0000-00-00 00:00:00',
          `users`.`date_joined`, `users`.`date_last_joined`) AS `join_date`
FROM `users`
WHERE `users`.`name` = 'mary'

【讨论】:

  • 我是否必须使用AS 运算符来检索此值?
  • @user3420034 不一定,取决于您使用的 MySQL 驱动程序实现和语言。在 PHP 中,使用 PDO 您可以像这样检索它:$join_date = $sth->fetchColumn();
  • 在这种情况下,我使用的是 Java 准备好的语句。所以一般我会做类似ResultSet rs = ps.executeQuery();rs.getTimestamp("date_last_joined")
  • @user3420034 然后像你建议的那样给它起别名会更容易:AS `join_date`
猜你喜欢
  • 2013-06-09
  • 2017-09-21
  • 1970-01-01
  • 2013-07-12
  • 2014-02-19
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多