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)
, который использует function getEaster(year)
Сообщение от Вернер Кремер 4 августа 2009 в 15:06 http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
Единственное различие, которое я вижу, состоит в том, что 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
Проблема в том, что вы не ставили 2015-04-06
в кавычках, когда вы установите @date1
, Так что это интерпретация 2015-04-06
как арифметическое выражение, а не строка. Это так же, как:
SET @date1 = 2015 - 4 - 6;
который устанавливает @date1
на номер 2005
, Изменить на:
SET @date1 = '2015-04-06'
затем
SELECET @date1 = @date2
вернусь 1
,