sql-server - 如何使用 PARSE 和 .net 时间戳字符串作为 SQL 中的时间?

标签 sql-server sqlclr

我的数据库中有 .NET TimeSpan 字符串。 我想在 SQL 查询中将它们解析为时间。

在下面的示例中,我尝试转换值为 3 天的时间戳字符串。

SELECT PARSE('3.00:00:00.0000000' AS time)

但是,它失败并出现以下错误:

Error converting string value '3.00:00:00.0000000' into data type time using culture ''.

使用文化根本没有帮助。

根据documentation我应该能够做到这一点。

time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

目前我在网上没有找到任何提示。

最佳答案

一种方法是使用PARSENAME。下面的示例忽略 Timespan 字符串的天数部分,仅返回时间部分。

-- build string in HH:mm:ss.fffffff format and parse as time(7)
SELECT
    PARSE(
          PARSENAME('3.00:00:00.0000000',2) --00:00:00
        + '.'
        + PARSENAME('3.00:00:00.0000000',1) --0000000
    AS time);

关于sql-server - 如何使用 PARSE 和 .net 时间戳字符串作为 SQL 中的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247448/

相关文章:

c# - .NET 正则表达式整个字符串匹配

sqlclr - 为 CLR 函数设置 SCHEMABINDING 和 IsDeterministic

mysql - SQL Server 相当于 MySQL 多主复制?

mysql - 如何找到复杂的SQL查询

sql-server - 我可以采取哪些措施来提高 SQL Server 中纯用户定义函数的性能?

sql-server - AWS SQL Server 2017 RDS 上的 SQLCLR 支持

reporting-services - 不支持 SSRS 2012 自定义代码 .NET Framework 4.0

sql-server - 将数据从 XML 插入到 SQL Server 中的表中

c# - 本地 IIS 无法连接本地数据库

sql - SQL Server : decimal(2, 中经度/纬度值的数据库存储?)