可以写“%VALUE%”以便自动获取当前年份

问题描述 投票:0回答:1

查询如下所示: month.ty 的数据类型是文本

month.ty LIKE '%2024%'

我正在努力让它获得一年,而不必在年底时更改它。就像获取当前年份一样。

我尝试过加上特殊字符:

month.ty LIKE '%' + YEAR(current_timestamp) + '%'

这样,无论我在加号字符中输入什么内容,它都会弹出错误。 错误是:警告:#1292 截断不正确的 DOUBLE 值:'%'

还有这样的:

month.ty LIKE YEAR(CURRENT_TIMESTAMP)

在这种情况下它什么也不返回。但这很可能,因为它不进行比较,因为没有通配符“%”。

还有这样的:

month.ty LIKE '%' + CAST(year(CURRENT_TIMESTAMP) AS varchar) + '%'

在这种情况下,它会抛出错误 #1064 - 您的 SQL 语法有错误;

还尝试过:

month.ty LIKE '%' + YEAR(GETDATE()) + '%'

抛出错误 #1558 - mysql.proc 的列计数错误。预期为 21,发现为 20。使用 MariaDB 100108 创建,现在运行 100421。请使用 mysql_upgrade 修复此错误

我不确定我是否遗漏了某些东西,或者是否有其他方法可以使其工作。 XAMPP版本是8.1.6-0 / 服务器版本:10.4.21-MariaDB

sql mysql xampp wildcard sql-like
1个回答
0
投票

正如评论中提到的,不建议以文本格式保存日期。相反,请始终使用日期或时间戳类型。

字符串连接可以使用

CONCAT()
而不是
+
来完成,如下所示:

WHERE month.ty LIKE CONCAT('%', YEAR(current_timestamp), '%')
© www.soinside.com 2019 - 2024. All rights reserved.