Почему после CONCAT переменные не равны в MySQL?

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

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

0

Другие решения

Проблема в том, что вы не ставили 2015-04-06 в кавычках, когда вы установите @date1, Так что это интерпретация 2015-04-06 как арифметическое выражение, а не строка. Это так же, как:

SET @date1 = 2015 - 4 - 6;

который устанавливает @date1 на номер 2005, Изменить на:

SET @date1 = '2015-04-06'

затем

SELECET @date1 = @date2

вернусь 1,

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector