我正在尝试对数据库进行查询,其中我的联系人的日期格式为生日,如(1980-03-13)(年 - 月 - 日)。但我想查询我的数据库(03)月内所有生日。这怎么可能?
如果有人可以放弃一些非常感激的光。
PS。我正在使用PHP对MySQL进行查询。
更新:MySQL表格CONTACTS有一个(DOB字段)格式=(日期)。
答案 0 :(得分:3)
select * from table
where Month(column) = 3
如果是一个字符串
select * from table
where Month(cast(column as datetime)) = 3
答案 1 :(得分:2)
您可以使用SELECT MONTH('2008-02-03')获取月份编号,将日期替换为您的列。
答案 2 :(得分:1)
您可以使用EXTRACT()函数。在WHERE子句中:
WHERE EXTRACT(MONTH FROM dateColumn) = 3
答案 3 :(得分:0)
“尼克·罗兰多”(Nick Rolando)给出的答案对我有用。
这是我解决与您相同的问题的方式:
SELECT date_of_birth FROM customer_id
WHERE EXTRACT(MONTH FROM date_of_birth) = 3;
使用“ WHERE”子句,“ EXTRACT”函数通过在括号中定义“ MONTH”属性来完成所有工作,并且知道如何仅提取包含月份的数据:3
ALSO的“出生日期”列必须具有正确的日期格式,例如:“ 1999-03-29”
(顺便说一句,这在PostgreSQL 12上对我有用)
答案 4 :(得分:-1)
您可以对此数据执行各种字符串操作,但它将是sloooow。我建议将日期保留在DATE列中,加上月份作为单独的INT列。这将复制一部分数据,但允许您有效查询(特别是如果您索引月份)。原因:字符串操作相对较慢,函数调用无法编入索引。