时间 - SQL(分钟和秒)

时间:2017-02-04 23:52:12

标签: sql sql-server

我创建了一个TIME表。该表有两列:一列用于分钟,另一列用于秒。我将他们的数据类型设为Decimal。

有没有办法创建一个派生列,其中分钟和秒的格式为mm:我的两列中的ss?

如果不是,如果数据不是DECIMAL类型,如何将数据插入我的分钟列?它应该是什么类型的?

谢谢!

注意我正在使用SQL服务器

2 个答案:

答案 0 :(得分:1)

您的评论听起来像是在尝试按间隔(或持续时间)进行算术运算。

SQL Server的time数据类型“定义一天的时间。时间没有时区感知,基于24小时制。”您无法添加两个select cast('2:00' as time) + cast('3:00' as time) Operand data type time is invalid for add operator. 值; 2点+ 3点真的是胡说八道。在SQL Server 2012中。 。

interval

其他dbms可能会返回一个荒谬的数字。

标准SQL包含一个名为interval的数据类型,它支持您期望的算术和格式。所以2点+3小时将返回5:00:00(5点)。如果不支持declare @val as integer; -- 10:01:12, 10 hours, 1 minute, 12 seconds, in seconds. set @val = (10 * 60 * 60) + (1 * 60) + 12; -- Leading zeroes for minutes and seconds. select @val as total_sec, concat(@val / (60 * 60), ':', format((@val / 60) % 60, 'D2'), ':', format(@val % 60, 'D2')) as total_time 数据类型,请将最细粒度的单位(秒,为您)存储为整数,并自行格式化以供显示。我自己也可以使用一个视图。

var name = form.name.value; //suppose you get 'Isaac' here

var object = {
    "users" : {
    }
}

object.users[name] = {
    name: name,
    age: 25 
}

console.log(object);
/*
{
    "users": {
            "Isaac": {
                "name": "Isaac",
                "age": 25
            }
        }
    }
*/
total_sec  total_time
--
36072      10:01:12

答案 1 :(得分:0)

正如@mclaassen指出的那样,我很好奇为什么你没有使用内置的time数据类型。

那就是说,如果你真的想手工建立一个时间表,那么你可以有一个计算列。我们称之为timeString

alter table [time] 
    add timeString as (left('0' + cast([minutes] as varchar(10)), 2) + ':' + left('0' + cast([seconds] as varchar(10)), 2))

有关SQL Server中计算列的文档,请参阅https://msdn.microsoft.com/en-us/library/ms188300.aspx