在sql server中将字符串转换为smalldatetime数据类型时失败(不包括静态值)
我有一个在sql server中将字符串转换为smalldatetime数据类型时失败(不包括静态值),sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个表存储开始时间和结束时间 我得到 将字符串转换为smalldatetime时转换失败 数据类型 使用该表选择下面的查询时出错 select CAST(substring(CONVERT(varchar,convert(smalldatetime,o.StartTime),114), 1,2) as int) from TimeTable O 在分析中,我发现很少有Starttime为'9:30 PM'的记录会导致错误。(其他记录的开始时间为'09:30 PM')。我已排除“9:30
表
存储开始时间和结束时间
我得到
将字符串转换为smalldatetime时转换失败
数据类型
使用该表
选择下面的查询时出错
select CAST(substring(CONVERT(varchar,convert(smalldatetime,o.StartTime),114), 1,2) as int)
from TimeTable O
在分析中,我发现很少有Starttime为'9:30 PM'
的记录会导致错误。(其他记录的开始时间为'09:30 PM'
)。我已排除“9:30 PM”记录并成功执行查询
问题是,
如果我在select
语句中明确指定值,如下所示
SELECT CAST(substring(CONVERT(varchar,convert('9:30 PM',o.StartTime),114), 1,2) as int)
我没有得到任何错误
但是,当我从
表中选择时,我得到了错误。有人能帮上忙吗?您真正想要的输出是什么
如果您希望将“9:30 PM”或“09:30 PM”等值转换为时间格式,则可以使用以下值
SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS TIME)
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS TIME)
否则,如果希望将其存储在datetime或smalldatetime中
那么这对你有用
SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS DATETIME)
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS DATETIME)
您实际想要的输出是什么
如果您希望将“9:30 PM”或“09:30 PM”等值转换为时间格式,则可以使用以下值
SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS TIME)
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS TIME)
否则,如果希望将其存储在datetime或smalldatetime中
那么这对你有用
SELECT CAST(CONVERT(VARCHAR(8), '9:30 PM', 108)AS DATETIME)
SELECT CAST(CONVERT(VARCHAR(8), '09:30 PM', 108)AS DATETIME)