[英]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.