我正在开发一个考勤系统(计算员工工作的小时数,并应用了许多班次规则)
我收到Clocked ON,Clocked OFF,(Date and Time)的原始交易,然后计算工作时间。
我正在寻找具有广泛时间计算经验的任何人的意见,或者我们称之为“最佳实践”,用于存储原始交易和计算时间(此领域的任何人都可以理解时间是一个独特的野兽)。
注意事项:将日期和时间存储为日期时间类型,或日期类型和时间类型分开,还要考虑导出到Excel的任何限制。
将日期存储为DateTime或日期类型和时间作为字符串,并编写一个函数以从字符串转换。
任何建议或指针或“留意GOTCHA”都会受到赞赏。
答案 0 :(得分:2)
不要将日期时间存储为字符串。很少(可能是零)实例,这是一个很好的设计。
存储为Datetime2
(我的偏好)或2列,一个纯Date
和一个纯Time
。您可以将Datetime2
列投射到日期和时间:
select DatePortion = cast(MyColumn as Date), TimePortion = cast(MyColumn as Time)
如果必须考虑时区,请使用datetimeoffset(7)