为什么SELECT * FROM [table] WHERE [timestamp_field]<" NOW()"在MySQL工作,但在Mariadb不工作?

时间:2016-02-20 22:43:49

标签: mysql sql mariadb

我正在将我从最新版MySQL编写的应用程序转换为最新版本的Mariadb(10.1.something),到目前为止一切顺利,除了以下内容:

SELECT `fields` FROM `my_table` WHERE `timestamp_created`<"NOW()"

适用于MySQL,但不适用于MariaDB。 timestamp_created字段当然有时间戳数据。像

这样的东西
SELECT `fields` FROM `my_table` WHERE `timestamp_created`<"2016-02-19 19:59:59"

在MariaDB中有效,但当我使用timestamp_created&lt;&#34; NOW()&#34;

时,它无法正常工作

为什么呢? NOW()在MySQL中的工作方式和在MariaDB中的工作方式基本相同,那么为什么使用NOW()比较时间戳并不能在MariaDB中工作?

谢谢!

1 个答案:

答案 0 :(得分:2)

NOW()是一个函数,而不是字符串。

SELECT
    fields
FROM
    my_table
WHERE
    timestamp_created < NOW()

在MySQL上,双引号"用作转义标识符分隔符,与T-SQL / MSSQL使用方括号字符[]的方式大致相同。 MySQL字符串必须用单引号字符'分隔,因此您对"NOW()"的使用方式与NOW()[NOW()]的解释方式相同。

此行为记录在此处:http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

  

...字符串文字只能在单引号内引用,因为在双引号内引用的字符串被解释为标识符。