【发布时间】:2011-09-15 08:45:00
【问题描述】:
我有一个表,其中有一个名为 slldate 的 varchar 字段。此字段包含以下格式的日期:
2010-08-30
(YYYY-MM-DD)
现在我想使用 mysql 查询选择包含当前月份的记录。
有人吗?
【问题讨论】:
我有一个表,其中有一个名为 slldate 的 varchar 字段。此字段包含以下格式的日期:
2010-08-30
(YYYY-MM-DD)
现在我想使用 mysql 查询选择包含当前月份的记录。
有人吗?
【问题讨论】:
当您使用字符字段而不是日期字段时,您必须转换值,然后使用正常的日期函数。喜欢
SELECT * FROM table WHERE MONTH(CAST(slidate as date)) = MONTH(NOW()) AND YEAR(CAST(slidate as date)) = YEAR(NOW())
【讨论】:
试试这个:
SELECT * FROM table_name WHERE MONTH(slldate) = date('m') AND YEAR(slldate) = date('Y');
【讨论】:
我有一个表,其中包含一个名为 slldate 的 varchar 字段。该字段包含日期
然后您应该将其更改为日期字段。你(应该)知道这是正确的做法。
以下方法适用于您的 varchar 字符串 - 但可以针对日期进行一些简化。
请注意,由于您的日期字符串已经是 big-endian,因此您不需要强制转换它们并失去索引优化的好处:
SELECT *
FROM yourtable
WHERE slldate >= CONCAT(DATE_FORMAT('%Y-%m-', NOW()),'01')
AND slldate < CONCAT(DATE_FORMAT('%Y-%m-', NOW() + INTERVAL 1 MONTH), '01')
【讨论】:
SELECT * FROM table_name WHERE YEAR(savedate) = YEAR(CURDATE()) AND MONTH(savedate) = MONTH(CURDATE())
【讨论】: