回答
简短的回答你的问题是,你可以使用STR_TO_DATE
和MONTH
功能:1)字符串表示形式转换为日期,和2)提取物从日期的月份部分:
SELECT t.*
FROM mytable t
WHERE MONTH(STR_TO_DATE(t.dateasstringcol,'%M/%d/%Y')) = 6
(这是假设在这里,通过'10/12/2009' 的,要指定10月12日,而不是10月你需要调整格式字符串如果情况并非如此。)
另外,如果一个月确实日期的主导部分,你可以做一个简单的字符串比较,如果月份是国内领先的组件:
SELECT t.*
FROM mytable t
WHERE t.dateasstringcol LIKE '6/%'
OR t.dateasstringcol LIKE '06/%'
(你可以消除这些谓词之一,如果你有一个确切的格式指定代表日期的条纹值:或者如果月总是存储为两个数字 - 或 - 该月从不存储前导零。)
如果您传递的参数为月,例如'6',那么你可以建立你的声明是这样的:
WHERE t.dateasstringcol LIKE '6' + '/%'
如果月是日期的第二个组成部分,那么你可以使用:
SELECT t.*
FROM mytable t
WHERE t.dateasstringcol LIKE '%/' + '6' + '/%'
OR t.dateasstringcol LIKE '%/' + '06' + /%'
注:
所有前面的示例查询都将返回任意年份的六月份行(2009,2010,2011)
您可以扩展这些示例,并执行与去年类似的东西,使用YEAR函数在当月的功能,或用于字符串比较
AND t.dateasstringcol LIKE '%/%/2011'
通常情况下,我们会抽取排在某月的某年,使用日期范围,例如:
SELECT t.*
FROM mytable t
WHERE MONTH(STR_TO_DATE(t.dateasstring,'%M/%d/%Y')) >= '2011-06-01'
AND MONTH(STR_TO_DATE(t.dateasstring,'%M/%d/%Y')) < '2011-07-01'
当然,当日期值存储为一个DATE
数据类型而不是作为VARCHAR,这意味着我们不需要STR_TO_DATE和月功能,我们可以指定一个比较原生DATE柱。这种方法允许我们在日期列上使用索引,这可以提高大型表上的查询性能。
SELECT t.*
FROM mytable t
WHERE t.realdatecol >= '2011-06-01'
AND t.realdatecol < '2011-07-01'
谢谢,这是最好的答案!这是我正在寻找的:$查询=“选择*从$表在哪里MONTH(STR_TO_DATE(日期,'%d /%m /%Y'))= $ month“; –
检查MySQL函数STR_TO_DATE。
但是,您不应该将日期存储为字符串。使用DATE类型。
+1表示日期不应以此格式存储。 – davidethell
我同意他们不应该我的数据库虽然:( –
的STR_TO_DATE功能是你的朋友在这里:
SELECT * FROM my_table
WHERE STR_TO_DATE('10/12/2009','%M/%d/%Y') >= '2012-06-01';
MONTH应该在这里帮助,如果我们想当前月份或特定月份的数据。例如:
$month = date('m'); OR particular month.
SELECT * FROM users WHERE MONTH(str_to_date("10/12/2009",'%e/%m/%Y')) = $month;
- 1. 检索MySQL中特定月份的所有记录
- 2. 我如何检索特定月份?现在它在我的图中检索所有月份
- 3. SQL语句检索所有新客户在特定月份
- 4. MySQL在特定月份,年份之间获取记录
- 5. MYSQL在特定月份和年份之前获取记录
- 6. 获取特定月份的所有记录 - 构建SQL查询
- 7. MySQL获取所有记录基于一年的一个月
- 8. 在cakephp中检索基于年份和月份的数据
- 9. 在特定的月份和年份之前获取所有记录
- 10. 检索基于月日在MySQL
- 11. 在mysql中使用年份和月份字段检索范围内的记录
- 12. 检索中的特定日期范围内发生的所有记录在MySQL
- 13. 记录下mysql在进行中的月份的月份
- 14. 获取特定月份和年份的日期范围内的所有记录
- 15. 如何检索Firebase中基于MYSQL外键概念的所有记录?
- 16. MSACCESS我想要得到计算所有记录的特定月份和年份
- 17. 如何检索在特定日期创建的所有记录?
- 18. 基于R计算在特定月份的特定天数
- 19. Mysql查询获取/存储特定月份的记录
- 20. 检索给定年份的所有ORM记录
- 21. 按月份编号查找特定月份的所有记录(例如1 = 1月)
- 22. 如何从一个表中检索所有记录在当月记录
- 23. 每个记录在特定年份和月份的累计值
- 24. 在SQL Server 2005中选择具有特定月份和年份的记录
- 25. 获取出生于特定月份的所有玩家SQLite中
- 26. 使用Codeigniter计算特定月份的所有月份
- 27. 从MySQL中检索数据的特定记录已不存在
- 28. 找到所有基于特定记录的父母
- 29. 检索所有记录
- 30. 检索从MySQL具有对特定列相同值的记录
真的,最好的解决方案是更改列以存储适当的MySQL日期时间而不是此格式。 –
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr – biziclop
也就是说,MONTH(STR_TO_DATE(yourdate,'%M /%d /%Y'))= 6' –