在SQL Server中,使用LIKE和通配符获取月份或日期会给出错误

时间:2019-07-06 15:24:04

标签: mysql sql popsql

我试图使用此查询从表客户中查找12月月份出生的客户:

SELECT *
FROM customers
WHERE date_of_birth LIKE '____-12-%' ;

但是它会引发错误:ER_WRONG_VALUE: Incorrect DATE value: '____-12-%'

date_of_birth值的类型为DATE,它在表中定义为date_of_birth DATE,

我得到的错误快照:

Here is the image link

这到底是什么问题?我记得我以前使用过它,并且效果很好,但是现在(可能是由于新更新)不起作用。甚至似乎不是因为MySQL严格模式。我不知道到底是什么引起了问题。

也请不要建议我那些已经有使用MONTH()这样的方法的替代方法:

SELECT * 
FROM customers 
WHERE MONTH(date_of_birth) = 12;

2 个答案:

答案 0 :(得分:1)

不要在日期数据类型上使用字符串函数。期。混合数据类型只会导致SQL问题。在like上使用date需要将日期转换为字符串,并且确切的格式取决于服务器的位置和设置。

如果您的出生数据是字符串,请修复:

alter table modify column date_of_birth date;

然后正确的方法是使用您出于某种未知原因特别不想使用的语法:

where month(date_of_birth) = 12

如果date_of_birth作为字符串存储,并且由于某种原因无法使用本机格式存储,则取决于字符串的未指定格式。想必您想要这样的东西:

where date_of_birth like '%-12-%'  -- assuming date_of_birth is a string

假设月份在日期字符串的中间,并用连字符括起来,而日期则在开始或结束位置。

答案 1 :(得分:0)

尝试到月份(date_or_birth)= 12 我还没有尝试..但是在SQL中有月份功能