【问题标题】:MySQL - Column Name already named 'TimeStamp', need to use it in Where ClauseMySQL - 列名已命名为“TimeStamp”,需要在 Where 子句中使用
【发布时间】:2013-09-19 15:35:08
【问题描述】:

编写此查询的正确方法是什么?我的客户表中有一个名为 TimeStamp 的列。我在尝试查找在 2012 年创建帐户的客户时遇到错误。我尝试过:

SELECT 'TimeStamp' AS CreatedDate
FROM customers
WHERE 'CreatedDate' >= '2012-01-01' AND 'CreatedDate' <= '2012-12-31'

还有

SELECT *
FROM customers
WHERE 'TimeStamp' >= '2012-01-01' AND 'TimeStamp' <= '2012-12-31'

总是没有结果(应该有数千个)

【问题讨论】:

    标签: mysql sql linqpad


    【解决方案1】:

    您不能在列名周围使用单引号,因为它们是标识符。

    SELECT *
    FROM customers
    WHERE TimeStamp >= '2012-01-01' AND TimeStamp <= '2012-12-31'
    

    如果您的列名是保留关键字,您可以使用backtick 将其转义,例如,

    WHERE `select` ....    -- SELECT is a reserved keyword
    

    或将其与 tableName 一起使用

    FROM tb
    WHERE tb.select ....   -- SELECT is a reserved keyword
    

    【讨论】:

      【解决方案2】:

      您可以使用反引号来转义诸如“时间戳”之类的关键字。这对我有用。

      select `timestamp` from users;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-04
        • 2022-11-18
        • 1970-01-01
        • 2014-02-23
        • 2019-01-23
        • 2015-11-10
        • 2019-01-22
        相关资源
        最近更新 更多