Maria DB/MySQL在比较时间戳方面的差异

Maria DB/MySQL在比较时间戳方面的差异,mysql,date,Mysql,Date,我有两个不同的开发环境,MySQL 5.6和Maria DB 10.0 我使用WHERE查询,比如time>=“userInputBeginTime”来限制数据的最短日期 不幸的是,前端提供了错误的日期信息(在我的例子中,预期的输入是格式为“yyyy-MM-dd”的日期字符串,但真正的输入是“无效日期”,这是由于javascript错误造成的) 然后我发现MySQL和Maria DB之间存在差异 在MySQL中: SELECT NOW() > "Invalid Date" test; +-

我有两个不同的开发环境,MySQL 5.6和Maria DB 10.0

我使用WHERE查询,比如
time>=“userInputBeginTime”
来限制数据的最短日期

不幸的是,前端提供了错误的日期信息(在我的例子中,预期的输入是格式为“yyyy-MM-dd”的日期字符串,但真正的输入是“无效日期”,这是由于javascript错误造成的)

然后我发现MySQL和Maria DB之间存在差异

在MySQL中:

SELECT NOW() > "Invalid Date" test;
+-----------+
|      test |
+-----------+
|         0 |
+-----------+
在Maria DB中:

SELECT NOW() > "Invalid Date" test;
+-----------+
|      test |
+-----------+
|         1 |
+-----------+
这种差异直接导致MySQL不返回任何内容而Maria DB返回所有内容的不同结果

我想他们可能用不同的方法来比较

我的临时解决方案是像这样使用SQL

SELECT * FROM table_name 
WHERE 
  NOT ISNULL(CONVERT("userInputBeginTime",datetime)) 
  AND time >= "userInputBeginTime"
当检测到无效输入时,强制Maria DB不返回任何内容

我想知道是否有更好的解决方案


致以最诚挚的问候

您可以尝试使用
STR\u TO\u DATE
将字符串解析为所需格式的日期。如果无法以指定的格式解析日期,此函数将返回
NULL
。您的错误JavaScript输入将属于这一类,并应产生
NULL

SELECT *
FROM table_name
WHERE STR_TO_DATE(userInput, '%Y-%m-%d') IS NOT NULL AND
      <other conditions here>
选择*
从表\u名称
其中STR_TO_DATE(userInput,'%Y-%m-%d')不为NULL,并且


选择@@SQL\u模式在两台服务器上。值匹配吗?嗨,谢谢@Michael sqlbot它们都返回+-----------+|@@sql|U模式|+----------------+| |+-------------+它们都是使用默认配置安装的