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

如何在SQL中将21/09/2009转换为2007-09-21 00:00:00.000格式?

SQL日期格式转换:从21/09/2009到YYYY-MM-DD HH:MI:SS.FFF的正确方法

你的语句有两个核心问题:

  • 输入的21/09/2007是数值除法运算,SQL会先计算21÷9÷2007得到小数,再转换为datetime,这完全偏离了日期字符串的转换逻辑,必须把日期用单引号括起来作为字符串传入。
  • 样式131是**伊斯兰历(Hijri)**的专用格式,不适用于公历日期转换。

正确实现方案(针对SQL Server)

要将'21/09/2009'(日/月/年格式)转换为2009-09-21 00:00:00.000格式,分两步处理:

方法1:基础转换

先用样式103(对应公历DD/MM/YYYY格式)将字符串转为datetime类型,再用样式121(对应YYYY-MM-DD HH:MI:SS.FFF格式)输出:

SELECT CONVERT(varchar, CONVERT(datetime, '21/09/2009', 103), 121)
  • 内层CONVERT(datetime, '21/09/2009', 103):完成字符串到datetime类型的解析
  • 外层CONVERT(varchar, ..., 121):将datetime类型格式化为你需要的字符串样式

方法2:安全转换(推荐)

如果数据中存在无效日期,使用TRY_CONVERT会返回NULL而非报错,避免中断查询:

SELECT TRY_CONVERT(varchar, TRY_CONVERT(datetime, '21/09/2009', 103), 121)

关键注意事项

  • 日期字符串必须用单引号包裹,否则会被SQL当作数学运算处理,导致转换结果完全错误。
  • 公历日期的DD/MM/YYYY格式对应样式103,不要混淆为伊斯兰历的131样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:30:59