MySQL - 列名已经命名为'TimeStamp',需要在Where子句中使用它

时间:2013-09-19 15:35:08

标签: mysql sql linqpad

编写此查询的正确方法是什么?我的customers表中有一个名为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'

并且始终没有结果(应该有数千人)

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

select `timestamp` from users;