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>
答案 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