带有时间的Sql更新列

时间:2016-04-26 16:18:14

标签: sql sql-server

我需要使用customdate1列中的时间更新starttime列。我遇到的问题是格式化。 starttime的当前格式是HH:MM:SS.SSSSSSS我需要它在HH:MM中。

enter image description here

谢谢 布赖恩

5 个答案:

答案 0 :(得分:0)

UPDATE tablename
SET customdate1 = (SELECT SUBSTRING(CONVERT(varchar, starttime, 108), 1, 5) 
                   FROM tablename);

尝试上面的一个。日期将被截断为5个字符。 hh:mm

答案 1 :(得分:0)

日期将以列创建的格式存储,例如日期时间

您需要将日期转换为从表中检索日期时所需的格式,例如CONVERT(CHAR(5), customdate1, 108)

答案 2 :(得分:0)

您使用的数据类型是什么?如果是时候你可以通过将列数据类型设置为time(0)

来更改分数秒精度

答案 3 :(得分:0)

我建议您先更改数据类型,然后再执行更新

ALTER TABLE TableName
ALTER COLUMN CustomDate1 time(0) not null


UPDATE tablename
SET customdate1 = (SELECT starttime) 
                   FROM tablename);

如果您不想存储秒数,可以将数据类型更改为char(5),然后执行更新。但不建议这样做。任何格式都应该在应用程序级别完成

参见示例:

ALTER TABLE TableName
ALTER COLUMN CustomDate1 char(5) not null


UPDATE tablename
SET customdate1 = (SELECT starttime) 
                   FROM tablename);

见一个简单的例子:

DECLARE @time char(5) = '12:15';
SELECT @time AS '@time'

答案 4 :(得分:0)

无法选择DATETIME类型列作为所需格式,但您可以创建VIEW,其中已选择列以及HH:MM格式的另一列

所以你可以在VIEW的选择列表中使用这样的东西:

SELECT StartTime, EndTime, ..., CONVERT(VARCHAR(5), GETDATE(), 108)  AS CustomDate1_Formatted
相关问题