Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从当月选择记录_Php_Mysql_Date - Fatal编程技术网

Php 从当月选择记录

Php 从当月选择记录,php,mysql,date,Php,Mysql,Date,我有一个带有varchar字段的表,名为slldate。此字段包含以下格式的日期: 2010-08-30 (YYYY-MM-DD) 现在我想使用mysql查询选择包含当前月份的记录 有人吗?试试这个: 从表格名称中选择*,其中月(slldate)=日期('m')和年(slldate)=日期('Y') 当您使用char字段而不是date字段时,必须强制转换该值,然后使用普通的date函数。像 SELECT * FROM table WHERE MONTH(CAST(slidate as date)

我有一个带有varchar字段的表,名为slldate。此字段包含以下格式的日期:
2010-08-30
(YYYY-MM-DD)

现在我想使用mysql查询选择包含当前月份的记录

有人吗?

试试这个:


从表格名称中选择*,其中月(slldate)=日期('m')和年(slldate)=日期('Y')

当您使用char字段而不是date字段时,必须强制转换该值,然后使用普通的date函数。像

SELECT * FROM table WHERE MONTH(CAST(slidate as date)) = MONTH(NOW()) AND YEAR(CAST(slidate as date)) = YEAR(NOW())
我有一个带有varchar字段的表,名为slldate。此字段包含日期

然后您应该将其更改为日期字段。你应该知道这样做是对的

下面的方法适用于您的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')
选择*
从你的桌子上
其中slldate>=CONCAT(日期格式(“%Y-%m-”,NOW()),“01”)
和slldate
从表格名称中选择*年(
保存日期)=年(CURDATE())和月(
保存日期)=月(CURDATE())

谢谢,我可以在不丢失记录的情况下将字符字段转换为日期字段吗?如果我将该字段转换为日期字段,select语句会是什么样子?这实际上也会选择前几年,不确定这是否是首选。Wesley van Opdorp,添加年份(现在())会有帮助吗?您只需要添加年份,更新答案以反映这一点。@dreni:如果您确实只有有效日期,它应该会起作用。首先复制表并进行尝试。Rufinus,如果我将varchar字段转换为日期字段,这会起作用吗?