You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中字符串字面量与日期字面量的查询行为差异咨询

关于两个日期查询的等价性解答

是的,查询2和查询1的效果完全一致,都是日期类型的直接比较,不会按照字符串字典序进行对比。

原因很简单:

  • 你的created字段是日期类型,数据库在执行查询时,会自动对右侧的字符串常量'1967-01-01'做隐式类型转换,把它转换成和created同类型的日期值后再进行比较。
  • 查询1只是用DATE关键字显式指定了常量的类型,本质上和查询2的隐式转换结果没有区别。

补充几个关键点:

  • 'YYYY-MM-DD'是绝大多数关系型数据库(比如PostgreSQL、MySQL、SQL Server等)都支持的标准日期格式,所以这种隐式转换不会出问题。
  • 如果用了非标准格式的日期字符串(比如'01-01-1967'),隐式转换可能会因为数据库的日期格式设置不同而出错,这时候显式用DATE关键字指定类型会更稳妥。
  • 性能上两种写法没有差异,查询优化器都会识别为日期比较,能正常使用created字段上的索引(如果存在的话)。

内容的提问来源于stack exchange,提问作者Hey jude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:49:53