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,我不希望用户键入开始和结束。我只想要工作时间。