【问题标题】:Mysql unable to select datetime columnMysql 无法选择日期时间列
【发布时间】:2021-11-22 01:25:25
【问题描述】:

我正在尝试在我的列中选择与日期时间匹配的行。我有一个包含 mDTS 设置为 DATETIME 的表(没有大括号)。 我的桌子看起来像这样:

mID mDTS mDTE
1 10/08/2021 10:41:47 11/08/2021 10:41:47
2 12/08/2021 10:42:34 13/08/2021 10:42:34
CREATE TABLE tb_cyc (
  mID int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID cycle',
  mDTS datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Data inizio ciclo',
  mDTE datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'Data fine ciclo',
  PRIMARY KEY (mID)
)

我正在尝试运行以下查询,但它返回一个空集。

SELECT * FROM tb_cyc WHERE mDTS = '12/08/2021 10:42:34'

我也试过了:

SELECT * FROM tb_cyc WHERE mDTS LIKE '12/08/2021 10:42:34'

SELECT * FROM tb_cyc WHERE mDTS = '12/08/2021 %'

但这些似乎都不起作用。 我做错了什么?

【问题讨论】:

  • 您似乎将datetime 存储为文本数据类型,您需要使用字符串到日期函数,如STR_TO_DATE
  • 请编辑您的问题以显示(作为文本,而不是图像)show create table tb_cyc 的输出
  • 我已更新问题以显示创建表@ysth
  • 您使用的是正确的日期时间数据类型。 mySQl 是否真的返回像 10/08/2021 10:41:47 这样的日期?
  • @alessandro.todisco 不,实际上没有。无论您使用什么来显示结果,都是以这种方式格式化日期。 mysql 期望并返回 ISO 8601 格式的日期:'2021-10-08 10:41:47'

标签: mysql datetime select


【解决方案1】:

更改 WHERE 子句中日期的格式:

WHERE mDTS = '2021-08-12 10:42:34'

mDTS 是一个日期时间;当与字符串比较时,MySQL 会将字符串视为日期/时间。文字值12/08/2021 10:42:34 将生成以下警告:

Incorrect datetime value: '12/08/2021 10:42:34' for column 'mDTS' at row 1

【讨论】:

  • 我试过这个:SELECT * FROM tb_cyc WHERE mDTS = '2021-08-12 10:42:34' 并且它有效。我正在使用 DB Forge 查找数据,但 mDTS 日期使用斜杠显示。我试过打开工作台,它使用破折号返回日期
  • 您的客户端正在将日期格式化为人类可读的形式,但在 SQL 中,您仍然需要使用明确的格式 (yyyy-mm-dd hh:mm:ss)。
  • 你说得对,DB forge 以不同的格式向我展示了结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多