【发布时间】:2021-03-27 20:59:33
【问题描述】:
我正在尝试比较以下内容:
SELECT g_m.user_id
, g_m.group_id
FROM Group_Members g_m
WHERE g_m.gender_id = 2
AND g_m.partner_gender_id = 1
AND g_m.birthday >= '01-01-1955'
AND g_m.birthday <= '12-31-2002'
AND g_m.user_id != 12
在这种情况下,g_m.birthday 应该显示为 '02-15-1998',但这会返回一个空数组,因为日期比较似乎不准确?
这是整个函数,日期是从用户带来的最小年龄和最大年龄传递的。
var today = new Date();
var minYear = "01-01-" + (today.getFullYear() - userPref.age_max); //min year to start but oldest age
var maxYear = "12-31-" + (today.getFullYear() - userPref.age_min); //max year to end but youngest age
var qSelect = "SELECT g_m.user_id, g_m.group_id" +
" FROM Group_Members g_m WHERE g_m.gender_id = ? AND g_m.partner_gender_id = ?" +
" AND g_m.birthday >= STR_TO_DATE(?, '%m/%d/%Y') AND g_m.birthday <= STR_TO_DATE(?, '%m/%d/%Y')" +
" AND g_m.user_id != ?";
var qValues = [userPref.partner_gender_id, userObj.gender_id, minYear, maxYear, userObj.id];
有人知道如何在 mysql 查询中比较日期吗?
【问题讨论】:
-
日期比较正常,但您正在比较字符串。
-
所以我需要将查询中的日期转换为实际日期ok
-
使用日期数据类型存储日期(或者不要使用 RDBMS)。然后回复我们。
-
嗨,请看我上面的更新,我正在使用年龄范围来构建日期,而使用 strtodate 它不起作用。
-
它不起作用,因为您的格式字符串看起来错误。也许在您的问题中添加一些示例数据。