我知道 SO 上已经有很多这样的问题,但我的问题与已经存在的问题略有不同。
场景:数据库具有 DateTime 类型的 ApptDt 列,其值的格式为“yyyy-mm-dd hh:mm:ss”。我来自印度,日期以欧洲格式“dd-mm-yyyy”传递。所以每次我收到这个错误:
将 Varchar 数据类型转换为日期时间会导致值超出范围
示例查询 1:
Declare @EffectiveDt as varchar(29)
Set @EffectiveDt = '27/07/2013'
print Convert(DateTime,@EffectiveDt,102) // throws above error
示例查询 2:
Declare @EffectiveDt as varchar(29)
Set @EffectiveDt = '07/27/2013'
print Convert(DateTime,@EffectiveDt,104) // throws above error too
问题:
两种格式都有效,在T-Sql中允许转换;为什么会抛出这样的错误?
是否有任何通用函数或场景可以在 SQL 中进行这种往返转换?