Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “要存储的正确数据类型是什么?”;“工作时间”;_Sql_Sql Server 2008 - Fatal编程技术网

Sql “要存储的正确数据类型是什么?”;“工作时间”;

Sql “要存储的正确数据类型是什么?”;“工作时间”;,sql,sql-server-2008,Sql,Sql Server 2008,我从用户那里收集工作时间,格式如下: 1:30 0:45 2:15 8:00 6:19 在SQL SERVER中,应该使用哪种数据类型来存储该值?我需要在某一点上对该值求和。不存储工作小时数,存储工作分钟数。你的价值观会变成 Time int ---- --- 1:30 90 0:45 45 2:15 135 8:00 480 6:19 379 通过除以60并取余数,您可以根据需要将其转换为显示 另一方面,求和将非常容易。不幸的是,SQL Server没有表示时间跨度的数据类型1。我通常会建

我从用户那里收集工作时间,格式如下:

1:30
0:45
2:15
8:00
6:19

在SQL SERVER中,应该使用哪种数据类型来存储该值?我需要在某一点上对该值求和。

不存储工作小时数,存储工作分钟数。你的价值观会变成

Time int
---- ---
1:30 90
0:45 45
2:15 135
8:00 480
6:19 379
通过除以60并取余数,您可以根据需要将其转换为显示


另一方面,求和将非常容易。

不幸的是,SQL Server没有表示时间跨度的数据类型1。我通常会建议一个
int
列和一点命名,这样就可以清楚地看到它是以秒/分/小时为单位的——不管您需要什么粒度



1它具有
time
数据类型,但表示一天中的某个时间,而不是时间跨度。将一天中的两个时间相加是没有意义的,因此,
时间
数据类型不支持相加。

您实际上不是在节省工作时间,而是在节省工作分钟。将工作时间以分钟为单位保存在
int
字段中,并根据显示需要将其转换为
hh:mm
格式。如果用户的工作时间不能超过24小时,则只需使用
time
。如果他们可以工作超过24小时,我会选择一个小整数,即分钟数(每24小时1440分钟)@ZoharPeled-但是你仍然不能将两个
时间
值加在一起,所以我不确定它会有什么好处。为什么不使用开始/结束时间?你可以根据需要将不同的分钟进行DATEDIFF并格式化。Horia,我不希望用户键入开始和结束。我只想要工作时间。