为什么双引号会影响比较日期时间的结果?
Why do double quotes influence result in compareing datetime?
为什么这两个结果 return 不一样?
SELECT foo FROM bar WHERE addtime > "2020-10-10" # returns several results
SELECT foo FROM bar WHERE addtime > 2020-10-10 # zero results
谁能解释一下为什么?
(addtime
是日期时间类型。)
这不是你想要的:
where addtime > 2020-10-10
Unquoted 2020-10-10
是算术运算,其中returns整数值2000
。然后您要求 MySQL 将其与日期进行比较,因此它会尝试将整数转换为日期,从而产生 null
- 因此所有行的比较都是错误的。
另一方面,在另一个表达式中,文字日期用双引号括起来,MySQL 可以识别它。
我建议为文字日期和字符串使用单引号;虽然 MySQL 允许为此目的使用双引号,但这偏离了 SQL 标准,其中双引号代表标识符(例如列名或 table 名称),没有附加值。所以:
where addtime > '2020-10-10'
为什么这两个结果 return 不一样?
SELECT foo FROM bar WHERE addtime > "2020-10-10" # returns several results
SELECT foo FROM bar WHERE addtime > 2020-10-10 # zero results
谁能解释一下为什么?
(addtime
是日期时间类型。)
这不是你想要的:
where addtime > 2020-10-10
Unquoted 2020-10-10
是算术运算,其中returns整数值2000
。然后您要求 MySQL 将其与日期进行比较,因此它会尝试将整数转换为日期,从而产生 null
- 因此所有行的比较都是错误的。
另一方面,在另一个表达式中,文字日期用双引号括起来,MySQL 可以识别它。
我建议为文字日期和字符串使用单引号;虽然 MySQL 允许为此目的使用双引号,但这偏离了 SQL 标准,其中双引号代表标识符(例如列名或 table 名称),没有附加值。所以:
where addtime > '2020-10-10'