返回信息流想计算考勤的累积时间,但是累积时间可能就会超出24小时,如果存储成STRING类型的话,再进行累加的时候也转换不成DATETIME,求解决方法
谢谢,请吃大果粒!
这是一条镜像帖。来源:北邮人论坛 / database / #6077同步于 2011/10/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
想用SQL存考勤累积时间,datetime报错(超出24小时)
wayway
2011/10/30镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
用的时候再转换就行了
【 在 wayway 的大作中提到: 】
: : 存成int
: : --
: 但是我时间表示的形式,带分和钞的24:00:00?
: ...................
你可以具体说下你的需求,还有为什么超出24小时报错,是说只有时分秒,没有年月日?
MySQL的话,TIME类型以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值采用'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。
SELECT addtime( "23:59:59", "11:59:59" ) ;
addtime("23:59:59", "11:59:59")
35:59:58
另外正如ls建议的,你使用数据库的时间日期存储只不过是把时间的计算转换工作交给数据库了,不用在外部程序中转换了,如秒数转换为时间:
SELECT sec_to_time( 43200 +43200 ) ;
sec_to_time(43200+43200)
24:00:00
【 在 wayway (wayway) 的大作中提到: 】
: 想计算考勤的累积时间,但是累积时间可能就会超出24小时,如果存储成STRING类型的话,再进行累加的时候也转换不成DATETIME,求解决方法
: 谢谢,请吃大果粒!
记录每天的上班时间之后,把当天工作时长,由datetime转换成2个bigint变量,小时和分众,分别存储,然后在月末统计考勤的时候,再把分钟和小时计算(包括进位等等)处理后,转换成datetime,或者直接显示出xx小时xx分钟,还可以弄出xx天来
这个思维有点类似于做超大数字的乘法的时候,不能用计算机本身定义的变量来存储,总会溢出的,而是弄一个链表,每个位数字存一个元素,然后计算的时候进行转换