为什么在CONCAT之后MySQL中的变量不相同?

时间:2015-10-08 06:49:42

标签: php mysql select concat

SET @date1 = 2015-04-06;
SET @date2 = "2015-04-06";

SELECT @date1 = @date2;

返回0

SELECT "2015-04-06" = 2015-04-06;

返回0

SELECT CONCAT('2015-04-06') = @date1;

返回0

SELECT CONCAT('2015-04-06') = @date2;

返回1 - 为什么?我做错了什么?更明显的是:

SELECT CONCAT('2015-04-06') = CONCAT('2015-04-06');

返回1

上下文:我正在尝试编写函数is_bussiness_day(date),它使用{strong> Werner Kremer 发布的function getEaster(year)于2009年8月4日下午3:06 http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html < / p>

2 个答案:

答案 0 :(得分:1)

问题是,当您设置2015-04-06时,您没有将@date1放在引号中。所以它将2015-04-06解释为算术表达式,而不是字符串。它与:

相同
SET @date1 = 2015 - 4 - 6;

@date1设置为数字2005。改为:

SET @date1 = '2015-04-06'

然后

SELECET @date1 = @date2

将返回1

答案 1 :(得分:0)

我看到的唯一区别是date1被赋予Date和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