SQL SERVER字符串转换问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER字符串转换问题相关的知识,希望对你有一定的参考价值。
SQL Server 中通过Convert或cast将空格字符串转换为浮点型为何为零,有什么办法使其成为NULL或不进行转换。例如
select convert(float, ' ')或select cast(' ' as float)结果都是0,有什么办法让空格字符串转换成浮点后结果不是零
在 SQL Server 中将字符串转换为日期
【中文标题】在 SQL Server 中将字符串转换为日期【英文标题】:Convert string into date in SQL Server 【发布时间】:2016-01-16 07:06:03 【问题描述】:从字符串转换日期和/或时间时转换失败。
在 SQL Server 中运行此语句时出现上述错误:
SELECT CONVERT(datetime, 'Fri, 15 Jan 2016 17:30:05 GMT')
其实我想在Datetime
列中插入相同的字符串格式
【问题讨论】:
预期结果是什么。是否要转换为当地时间CONVERT
似乎不支持您当前时间戳的格式,因此我认为您需要对其进行处理才能使转换生效。
其实我想在日期时间列中插入相同的字符串格式
以易于处理的形式将数据呈现给 SQL Server:ISO 8601 format。
【参考方案1】:
正如 Tim Biegeleisen 所建议的,该字符串需要经过处理才能进行转换。为了转换它,您需要去掉当天 (Fri,
) 和最后的 GMT
时区,例如:
DECLARE @date varchar(50) = 'Fri, 15 Jan 2016 17:30:05 GMT'
SELECT CONVERT(DATETIME, SUBSTRING(@date, 5, LEN(@date) - 8), 113)
此解决方案确实会去除时区信息,如果您想将其转换回 UTC,请查看post。
【讨论】:
【参考方案2】:如果要将字符串'Fri, 15 Jan 2016 17:30:05 GMT'
插入datetime
列,则需要在插入之前从字符串中删除Fri,
和GMT
。
SELECT CAST(substring(@str_date,5,len(@str_date)-8) as datetime)
DEMO
【讨论】:
以上是关于SQL SERVER字符串转换问题的主要内容,如果未能解决你的问题,请参考以下文章