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

如何解决SQL代码执行时的日期范围转换超出范围错误?

解决SQL函数日期参数转换报错问题

问题原因

你直接传入10/10/2023或10-10-2023时,SQL会将其解析为算术运算而非日期字符串:

  • 10/10/2023会被计算为10÷10÷2023≈0.00049,是一个小数
  • 10-10-2023会被计算为10-10-2023=-2023,是一个负数
    这两个值尝试转换为datetime类型时,必然超出合法日期范围,触发报错。

解决方案

必须将日期以字符串形式传入(用单引号包裹),并使用SQL Server能正确识别的格式,推荐两种方式:

1. 使用ISO标准日期格式(最稳妥,不受区域设置影响)

直接传递YYYY-MM-DD格式的字符串,SQL Server默认能正确解析:

SELECT * 
FROM fnSublocacaoGerencialNew('2023-10-10', '2023-10-17', NULL/*NrSublocacaoEspecifico*/) 
ORDER BY NrSublocacao DESC

2. 显式转换本地格式日期

如果需要保留DD/MM/YYYY格式,使用CONVERT函数指定格式代码(103对应欧洲/英国日期格式):

SELECT * 
FROM fnSublocacaoGerencialNew(
    CONVERT(DATETIME, '10/10/2023', 103), 
    CONVERT(DATETIME, '17/10/2023', 103), 
    NULL/*NrSublocacaoEspecifico*/
) 
ORDER BY NrSublocacao DESC

内容的提问来源于stack exchange,提问作者Rodolfo keil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:17:43