为什么在 CONCAT 之后 MySQL 中的变量不相等?
Why after CONCAT are not variables equal in MySQL?
SET @date1 = 2015-04-06;
SET @date2 = "2015-04-06";
SELECT @date1 = @date2;
returns 0
SELECT "2015-04-06" = 2015-04-06;
returns 0
SELECT CONCAT('2015-04-06') = @date1;
returns 0
SELECT CONCAT('2015-04-06') = @date2;
returns 1 - 为什么?我做错了什么?更明显的是:
SELECT CONCAT('2015-04-06') = CONCAT('2015-04-06');
returns 1
上下文:我正在尝试编写函数 is_bussiness_day(date)
,它使用 Werner Kremer 于 2009 年 8 月 4 日发布的 function getEaster(year)
3:06pm在 http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
我看到的唯一区别是 date1 被赋予了一个日期而 date2 被赋予了一个字符串。
更改 date2 以获取日期,您的 concat = date2 正在运行。
要比较 2 个字符串,必须使用 strcmp
函数来完成。
STRCMP( CONCAT('2015-04-06'), CONCAT('2015-04-06'));
结果为 0(零)。
希望,这有助于...
见https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html
问题是你设置@date1
的时候没有把2015-04-06
放在引号里。所以它将 2015-04-06
解释为算术表达式,而不是字符串。等于:
SET @date1 = 2015 - 4 - 6;
将 @date1
设置为数字 2005
。更改为:
SET @date1 = '2015-04-06'
然后
SELECET @date1 = @date2
将 return 1
.
SET @date1 = 2015-04-06;
SET @date2 = "2015-04-06";
SELECT @date1 = @date2;
returns 0
SELECT "2015-04-06" = 2015-04-06;
returns 0
SELECT CONCAT('2015-04-06') = @date1;
returns 0
SELECT CONCAT('2015-04-06') = @date2;
returns 1 - 为什么?我做错了什么?更明显的是:
SELECT CONCAT('2015-04-06') = CONCAT('2015-04-06');
returns 1
上下文:我正在尝试编写函数 is_bussiness_day(date)
,它使用 Werner Kremer 于 2009 年 8 月 4 日发布的 function getEaster(year)
3:06pm在 http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
我看到的唯一区别是 date1 被赋予了一个日期而 date2 被赋予了一个字符串。
更改 date2 以获取日期,您的 concat = date2 正在运行。
要比较 2 个字符串,必须使用 strcmp
函数来完成。
STRCMP( CONCAT('2015-04-06'), CONCAT('2015-04-06'));
结果为 0(零)。 希望,这有助于...
见https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html
问题是你设置@date1
的时候没有把2015-04-06
放在引号里。所以它将 2015-04-06
解释为算术表达式,而不是字符串。等于:
SET @date1 = 2015 - 4 - 6;
将 @date1
设置为数字 2005
。更改为:
SET @date1 = '2015-04-06'
然后
SELECET @date1 = @date2
将 return 1
.