2016-02-20 81 views
-2

我轉變我是從最新的MySQL版本寫入MariaDB的(10.1.something)的最新版本的應用程序,到目前爲止,一切都已經順利,除了以下:爲什麼SELECT * FROM [table] WHERE [timestamp_field] <「NOW()」在MySQL中工作,但不在Mariadb中?

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

在MySQL中工作,但不在MariaDB中工作。當然timestamp_created字段有時間戳數據。像MariaDB的

SELECT `fields` FROM `my_table` WHERE `timestamp_created`<"2016-02-19 19:59:59" 

作品的東西,但它並沒有當我使用timestamp_created < 「NOW()」 工作

爲什麼? NOW()在MySQL中的作用與在MariaDB中的作用基本相同,那麼爲什麼使用NOW()比較時間戳在MariaDB中不起作用?

謝謝!

+1

「NOW()」是一個字符串,而不是一個TIMESTAMP –

回答

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

...字符串文字可僅在單引號,因爲雙引號內引用字符串被解釋爲一個標識引用。

+0

OMG這麼愚蠢的錯誤,謝謝! – sobriquett

+0

現在問題是爲什麼它在MySQL上工作? –

+0

@RickJames我修改了我的答案來解釋。 – Dai

相關問題