【问题标题】:My SQL limiting a search by just the month in a where clauseMysql 在 where 子句中仅按月份限制搜索
【发布时间】:2021-03-28 00:39:31
【问题描述】:

所以我需要将我的查询限制在我的函数中的 09 月,但我似乎无法弄清楚 where 部分。我是这么写的

''' select fname, lname, dob as 'Sept Birthdays' '''来自学生 '''其中 dob = '%09%' '''按名称排序;

我似乎在这个网站和我的笔记中阅读的所有内容并没有真正给我一个有效的答案。因为我在表格中的数据本身是 yyyy-mm-dd 格式,所以我只想要 mm。有什么帮助吗?

我正在使用的桌子是table set 顺便说一句,这些都是假名字,所以我不会提供任何信息。 抱歉,如果这是重复的,但我找不到重复的,因此这个问题。

【问题讨论】:

  • 我想你想要like,而不是=。见w3schools.com/sql/sql_like.asp。此外,您可能要小心不匹配第九天或年份。
  • 如果“dob”字段实际存储为数据字段,可以使用MONTH()函数。例如。 MONTH(dob) = 9。或者如果你的“dob”字段只是一个字符串,那么 MONTH(DATE(dob)) = 9 应该可以解决问题
  • 我明白了,谢谢大家!
  • 注意 SO 支持标记(Markdown 和 HTML)以自动格式化(和突出显示)代码。当您发布(或编辑您的帖子)时,有一些按钮可以应用此类格式,并且编辑器内的帮助解释格式。站点帮助也应该有解释标记的页面。为什么不试试这个问题呢?
  • 这能回答你的问题吗? MYSQL select all from table where month?

标签: mysql


【解决方案1】:

数据类型为日期的列?如果是这样,您可以使用此查询。

我根据你的查询做了这个查询,任何事情都是你适应的。

SELECT fname, lname, dob AS 'Sept Birthdays' 
  FROM student 
  WHERE MONTH(dob) = 9 
  ORDER BY name DESC;

ORDER BY 可以与DESCASC 一起用于降序或升序(分别)。

  • MOUNT(column) = value // 按月搜索
  • YEAR(column) = value // 按年份搜索
  • DAY(column) = value // 按天搜索

Obs:您可以一起使用,例如 YEAR 和 MONTH

请注意,由于列数据不是直接比较而是通过函数传递的,所以一般不能使用student.dob上的indices,这会影响查询性能。如果这很重要,请参阅“Is it possible to have function-based index in MySQL?”。

【讨论】:

  • 请注意,函数不能使用索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2015-05-30
  • 2011-09-11
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多