我创建了一个TIME表。该表有两列:一列用于分钟,另一列用于秒。我将他们的数据类型设为Decimal。
有没有办法创建一个派生列,其中分钟和秒的格式为mm:我的两列中的ss?
如果不是,如果数据不是DECIMAL类型,如何将数据插入我的分钟列?它应该是什么类型的?
谢谢!
注意我正在使用SQL服务器
答案 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。