Mysql 如何在SQL中为年份编写NOT IN语句
那些不是1997年出生的用户是谁Mysql 如何在SQL中为年份编写NOT IN语句,mysql,sql,Mysql,Sql,那些不是1997年出生的用户是谁 SELECT userFname, userLname, userDOB FROM user WHERE userDOB IN YEAR(1997); 我做错了什么?我猜userDOB是约会对象 SELECT userFname, userLname, userDOB FROM user WHERE YEAR(userDOB) NOT IN (1997); 我猜userDOB是个约会对象 SELECT userFname, userLname, userDO
SELECT userFname, userLname, userDOB
FROM user
WHERE userDOB IN YEAR(1997);
我做错了什么?我猜userDOB是约会对象
SELECT userFname, userLname, userDOB
FROM user
WHERE YEAR(userDOB) NOT IN (1997);
我猜userDOB是个约会对象
SELECT userFname, userLname, userDOB
FROM user
WHERE YEAR(userDOB) NOT IN (1997);
您应该使用trhe YEAR()函数来转换日期列,并且可以使用not in来检查多个值
SELECT userFname, userLname, userDOB
FROM user
WHERE year(userDOB) NOT IN (1997, 1998);
但如果只有一个值,则不需要输入(或不输入),但=
选择userFname、userLname、userDOB
来自用户
其中,年份(userDOB)为1997年;
您应该使用trhe YEAR()函数来转换日期列,并且可以使用not in来检查多个值
SELECT userFname, userLname, userDOB
FROM user
WHERE year(userDOB) NOT IN (1997, 1998);
但如果只有一个值,则不需要输入(或不输入),但=
选择userFname、userLname、userDOB
来自用户
其中,年份(userDOB)为1997年;
让事情变得简单:
YEAR(yourDate)
只返回yourDate
的年份
然后,为了找出所有不是1997年出生的用户,只需
选择userFname、userLname、userDOB
来自用户
何处年份(userDOB)1997
让事情变得简单:
YEAR(yourDate)
只返回yourDate
的年份
然后,为了找出所有不是1997年出生的用户,只需
选择userFname、userLname、userDOB
来自用户
何处年份(userDOB)1997
我最纯粹的部分是反对当前使用年份
功能的答案。为什么?因为使用函数会使条件忽略索引,这就是原因
因此,答案通常是使用函数来创建范围:
SELECT userFname, userLname, userDOB
FROM user
WHERE userDOB >= CAST('1997-01-01' AS DATE)
AND userDOB < CAST('1998-01-01' AS DATE)
选择userFname、userLname、userDOB
来自用户
其中userDOB>=CAST('1997-01-01'为日期)
和userDOB
。。。除非你想要相反的结果,所以让我们切换条件:
SELECT userFname, userLname, userDOB
FROM user
WHERE userDOB < CAST('1997-01-01' AS DATE)
OR userDOB >= CAST('1998-01-01' AS DATE)
选择userFname、userLname、userDOB
来自用户
其中userDOB=CAST('1998-01-01'为日期)
。。。在这一点上,我的纯粹主义并不那么重要。为什么?由于所选行(可能)的百分比,以及数据不可能在同一索引()中。我最纯粹的部分是反对当前使用年份
功能的答案。为什么?因为使用函数会使条件忽略索引,这就是原因
因此,答案通常是使用函数来创建范围:
SELECT userFname, userLname, userDOB
FROM user
WHERE userDOB >= CAST('1997-01-01' AS DATE)
AND userDOB < CAST('1998-01-01' AS DATE)
选择userFname、userLname、userDOB
来自用户
其中userDOB>=CAST('1997-01-01'为日期)
和userDOB
。。。除非你想要相反的结果,所以让我们切换条件:
SELECT userFname, userLname, userDOB
FROM user
WHERE userDOB < CAST('1997-01-01' AS DATE)
OR userDOB >= CAST('1998-01-01' AS DATE)
选择userFname、userLname、userDOB
来自用户
其中userDOB=CAST('1998-01-01'为日期)
。。。在这一点上,我的纯粹主义并不那么重要。为什么?由于所选行(可能)的百分比,且数据不可能位于同一索引()中。是否有[userDOB]值为空或null,或者不是日期/时间数据类型?您可能需要适应这种情况。另外,我会使用YEAR(userDOB)!=1997年[userDOB]值是否为空或null,或者不是日期/时间数据类型?您可能需要适应这种情况。另外,我会使用YEAR(userDOB)!=1997