C# 如何在sql server中将字符串转换为日期时间

C# 如何在sql server中将字符串转换为日期时间,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我想以hh:mm:ss格式计算总时间。我在intlike(465)中有分钟 我提出: CONVERT(varchar, CONVERT(datetime, cast(cast(TotalMin/60 as int) as nvarchar(50)) + ' : ' + cast(TotalMin%60 as nvarchar(50))),108) AS TotalMin 但它显示了以下错误。不是在SQL Server中,而是在c#中运行代码时: 从字符转换日期和/或时间时转换失败 绳子 试试这

我想以
hh:mm:ss
格式计算总时间。我在
int
like(465)中有分钟

我提出:

CONVERT(varchar, CONVERT(datetime, cast(cast(TotalMin/60 as int) as nvarchar(50)) + ' : ' + cast(TotalMin%60 as nvarchar(50))),108) AS TotalMin
但它显示了以下错误。不是在SQL Server中,而是在c#中运行代码时:

从字符转换日期和/或时间时转换失败 绳子

试试这个:

TimeSpan t = TimeSpan.FromMinutes( TotalMin);

有关更多信息,请参见。您可以使用此代码在SQL Server中获取字符串。它将转换小时和分钟,并添加
00
秒,因为您没有它们(您使用的是分钟的整数值):

它最多工作5999分钟(99小时59分钟)


如果您需要Unicode版本:

declare @min int = 465

select right(N'0' + cast(@min/60 as nvarchar(2)),2)
    + N':'
    + right(N'0' + cast((@min - (@min/60)*60) as nvarchar(2)),2)
    + N':00'
有关强制转换和转换的完整讨论,包括不同的日期格式选项,请参阅下面的MSDN库链接:

这将对您有所帮助 当小数部分被丢弃时,您希望将其乘以毫秒

SELECT DATEADD(ms, 121.25 * 1000, 0)
如果希望不包含日期部分,可以使用CONVERT和样式114

SELECT CONVERT(VARCHAR, DATEADD(ms, 121.25 * 1000, 0), 114)

显示您的C#代码以运行此查询并从中获取结果。您的代码正常工作,但显示“@”代替“:”exa:00@56@00I无法更改数据类型,因为我正在从excel文件获取转换记录。
SELECT DATEADD(ms, 121.25 * 1000, 0)
SELECT CONVERT(VARCHAR, DATEADD(ms, 121.25 * 1000, 0), 114)