Sql server SQL Server:时间数据类型中需要帮助

Sql server SQL Server:时间数据类型中需要帮助,sql-server,Sql Server,首先,我不熟悉SQL Server,但对PostgreSQL很有经验。如果之前有人问过同样的问题,请原谅 我在一个表中有一列,其中包含一个时间数据类型的列 我使用SQLServer导入和导出向导将数据上传到表中 另外,我在前面发布了关于如何将时间转换为秒的文章,这比24小时还要长 但是现在我面临另一个问题,那就是上传到表中的时间数据类型的数据格式 我在那列有一个值,是01-01-1900 14:58。由于列数据类型为时间,因此该值仅使用小时、分钟和秒数部分进行更新 但是我想用这种格式更新这个值,

首先,我不熟悉SQL Server,但对PostgreSQL很有经验。如果之前有人问过同样的问题,请原谅

我在一个表中有一列,其中包含一个时间数据类型的列

我使用SQLServer导入和导出向导将数据上传到表中

另外,我在前面发布了关于如何将时间转换为秒的文章,这比24小时还要长

但是现在我面临另一个问题,那就是上传到表中的时间数据类型的数据格式

我在那列有一个值,是01-01-1900 14:58。由于列数据类型为时间,因此该值仅使用小时、分钟和秒数部分进行更新

但是我想用这种格式更新这个值,它是正确的值38:58:46

由于它是一种时间数据类型,这是表14:58:46中正在更新的值

当我使用文本函数将其转换为秒时,如下所示

SELECT 
    (SUBSTRING('14:58:46', 1, 2) * 60 * 60) + 
    (SUBSTRING('14:58:46', 4, 2) * 60) + 
    SUBSTRING('14:58:46', 7, 2)
这个结果是53926,但实际上应该是140326

有人能帮我解决这个数据类型的问题吗

提前感谢。

使用下面的查询

SELECT CAST(SUBSTRING('38:58:46', 1, 2) AS bigint)* 60 * 60 + 
       CAST(SUBSTRING('38:58:46', 4, 2) AS bigint) * 60 +  
       CAST(SUBSTRING('38:58:46', 7, 2) AS bigint)

这将返回140326。

我的问题是如何获得38:58:46的值?因为我的数据类型是时间,所以得到的是14:58:46。SQL server时间数据类型表示一天中基于24小时时钟的时间。怎么可能得到38:58:46的时间?那不是时间戳。它是一个列,包含为某件事安排的小时数。通常为38小时。对于SQL server,时间列表示一天中的某个时间。如果需要存储持续时间,请使用整数列并存储秒数@马克-我不想格式化原始数据。我想把它直接上传到表中,从表中我可以把它转换成秒吗?这就是我要找的。因为我不会对原始数据进行任何格式化或更改。原始数据中的错误将会减少。提前感谢您的回复。您已经有了将表值转换为秒的代码。您的问题是,您要求一个时间字段存储140326秒,而它只能存储86400秒。在我看来,如果您想存储一个表示持续时间>1天的值,那么应该在表中使用不同的数据类型来执行此操作。