我正在将我从最新版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中工作?
谢谢!
答案 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
...字符串文字只能在单引号内引用,因为在双引号内引用的字符串被解释为标识符。