【问题标题】:Why after CONCAT are not variables equal in MySQL?为什么在 CONCAT 之后 MySQL 中的变量不相等?
【发布时间】:2015-10-08 06:49:42
【问题描述】:
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),它使用 Werner Kremer 于 2009 年 8 月 4 日下午 3:06http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html 发布的 function getEaster(year)

【问题讨论】:

    标签: php mysql select concat


    【解决方案1】:

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

    SET @date1 = 2015 - 4 - 6;
    

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

    SET @date1 = '2015-04-06'
    

    然后

    SELECET @date1 = @date2
    

    将返回1

    【讨论】:

      【解决方案2】:

      我看到的唯一区别是 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-11
        • 2013-11-13
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        • 2013-12-29
        • 2015-02-12
        • 1970-01-01
        相关资源
        最近更新 更多