首页 > 解决方案 > SQL Server 将字符串转换为日期时间

问题描述

我正在使用 SQL 服务器,我需要将一段字符串转换为日期时间,但出现错误

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

到目前为止,这是我的代码导致问题

SELECT TOP (1) [stream]
    , convert(datetime, SUBSTRING(Stream, 12, 10), 103) as Date
FROM x
where .....

select *
from

当我将日期时间更改为 varchar 时,日期显示为“03/28/2021”

但是我需要它以“28/03/2021”的形式出现,我相信它才能正常工作

基本上只是切换我相信的月份和日期?

有任何想法吗?

标签: sql-serverdatetimesubstringconverters

解决方案


这里没有足够的信息来给你一个准确的答案——我们不知道你正在输入什么输入数据。

转换为 DateTime 的文档:

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

具有各种日期时间格式 dd/mm/yyy 、 mm/dd/yyyy 等的语言环境代码(您传递 103 的地方)

找到适用于您正在尝试做的事情的那个。

您关于“超出范围值”的错误意味着您使用了错误的语言环境格式 - 超过 12 的 DAY 值(例如,28 日)被解释为 MONTH 值。由于日历中没有第 28 个月,因此会引发错误。

您传入的语言环境代码为 103 = 这是英式英语:dd/mm/yyyy 尝试将其替换为 101 (en-US) for mm/dd/yyyy


推荐阅读