为什么Antlr4中的MySQL语法中没有日期和/或时间项?

为什么Antlr4中的MySQL语法中没有日期和/或时间项?,mysql,datetime,antlr4,Mysql,Datetime,Antlr4,以下是MySQL的语法: 不幸的是,我没有看到关于日期和时间常数的单词。例如,关于YYYY-MM-DD 原因很简单:这种语法只是一个玩具。它只实现了MySQL的一小部分。这里有100%完整的语法()。然而,这仍然适用于ANTLR3。ANTLR4的变体将在下一个MySQL工作台版本中发布(然后也从ANTLR语法目录链接)。因为它们是内置函数,而不是关键字。“它们”是谁?它们是“日期”和“时间”函数。我的意思是为什么没有日期时间常数的定义?语法检查不包括类型检查。只要有“某物”(语法允许),语法检查

以下是MySQL的语法:

不幸的是,我没有看到关于日期和时间常数的单词。例如,关于YYYY-MM-DD


原因很简单:这种语法只是一个玩具。它只实现了MySQL的一小部分。这里有100%完整的语法()。然而,这仍然适用于ANTLR3。ANTLR4的变体将在下一个MySQL工作台版本中发布(然后也从ANTLR语法目录链接)。

因为它们是内置函数,而不是关键字。“它们”是谁?它们是“日期”和“时间”函数。我的意思是为什么没有日期时间常数的定义?语法检查不包括类型检查。只要有“某物”(语法允许),语法检查器就可以了——包括顺便说一句。内部mysql解析器:它只会在发生(=之后)时引发异常。Mysql不会抱怨大多数事情,只要它能够以某种方式解析它所需要的。例如,
where date(now())=2016-12-06
(而不是
where date(now())='2016-12-06'
)将起作用。但这不是一个约会。它将计算
2016-12-06=1998
,并将其与
'2016-12-06'
进行比较。语法检查人员很难“知道”这一点。