SQL SERVER字符串转换问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER字符串转换问题相关的知识,希望对你有一定的参考价值。

SQL Server 中通过Convert或cast将空格字符串转换为浮点型为何为零,有什么办法使其成为NULL或不进行转换。例如
select convert(float, ' ')或select cast(' ' as float)结果都是0,有什么办法让空格字符串转换成浮点后结果不是零

参考技术A select convert(float ,(case when 字段名='' then null else 字段名 end))

在 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字符串转换问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server CE 转换/将双精度转换为字符串

如何在 SQL Server 中将字符串转换为日期时间?

SQL Server 将字符串转换为日期时间

SQL Server 将字符串转换为日期时间

SQL server cast () 字符串转换成时间的问题

sql server2000 关于表列转换的问题