我有一个名为 slldate 的 varchar 字段的表格。该字段包含以下格式的日期:
2010-08-30
(YYYY-MM-DD)
现在我想使用mysql查询选择包含当前月份的记录。
任何?
答案 0 :(得分:7)
当您使用char字段而不是日期字段时,必须转换值然后使用普通日期函数。像
SELECT * FROM table WHERE MONTH(CAST(slidate as date)) = MONTH(NOW()) AND YEAR(CAST(slidate as date)) = YEAR(NOW())
答案 1 :(得分:3)
试试这个:
SELECT * FROM table_name WHERE MONTH(slldate)= date('m')AND YEAR(slldate)= date('Y');
答案 2 :(得分:1)
我有一个名为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')
答案 3 :(得分:1)
SELECT * FROM table_name WHERE YEAR(savedate
)= YEAR(CURDATE())AND MONTH(savedate
)= MONTH(CURDATE())