[英]Fetch data from mysql table where a column contains date in string format and matches with today's date
我收到了一位客户的任务,该客户希望对其正在进行的应用程序进行一些更改。 有一个称为用户的表,该表具有一个称为生日的字段。 以前的开发人员是一个白痴,他保存了生日varchar(255)
而不是datetime
。 生日列中的数据保存为January 01, 1986
。
我想获取生日在当前日期的所有用户。
我尝试使用:
$query = "SELECT * FROM users WHERE
DAY(STR_TO_DATE(birthday, '%Y-%m-%d')) = '".date('d')."'
AND MONTH(STR_TO_DATE(birthday, '%Y-%m-%d')) = '".date('m')."'";
但是它返回的是空数据集。 我怎样才能解决这个问题?
您的日期格式与您在问题中指定的日期格式不匹配。 我认为您正在寻找:
$query = "SELECT * FROM users WHERE
DAY(STR_TO_DATE(birthday, '%M %d, %Y')) = '".date('d')."'
AND MONTH(STR_TO_DATE(birthday, '%M %d, %Y')) = '".date('m')."'";
我解决了,意识到自己做错了:
$query = "SELECT * FROM users
WHERE DAY(date_format(str_to_date( birthday, '%M %d, %Y' ), '%Y-%m-%d' )) = '".date('d')."'
AND MONTH(date_format(str_to_date( birthday, '%M %d, %Y' ), '%Y-%m-%d' )) = '".date('m')."'";
首先,我们需要将生日从字符串转换为兼容日期,然后将其格式化为实际日期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.