使用mySQL划分时间域
我有一个包含一些数据的时间序列表,但时间戳偶尔会关闭。为了检查时间戳,我们已经手动定义日出和日落,用PAR光合有效辐射值来估计太阳正午,PAR告诉多少光进来,以确定黎明和黄昏,然后推断太阳中午在两者之间的中点。我们决定宣布PAR上升到1.9以上,通常是早上7点的记录是黎明,而PAR等于或小于1.9的记录被认为是黄昏。使用mySQL划分时间域,mysql,timestamp,Mysql,Timestamp,我有一个包含一些数据的时间序列表,但时间戳偶尔会关闭。为了检查时间戳,我们已经手动定义日出和日落,用PAR光合有效辐射值来估计太阳正午,PAR告诉多少光进来,以确定黎明和黄昏,然后推断太阳中午在两者之间的中点。我们决定宣布PAR上升到1.9以上,通常是早上7点的记录是黎明,而PAR等于或小于1.9的记录被认为是黄昏。 我选择了1.9以上的PAR值,然后用一个组来找到每一天的最小值和最大时间值,这是: 选择datePart,MINtimePart作为日出, MAXtimePart作为日落, TIM
我选择了1.9以上的PAR值,然后用一个组来找到每一天的最小值和最大时间值,这是:
选择datePart,MINtimePart作为日出, MAXtimePart作为日落, TIMEDIFFMAXtimePart, MINtimePart作为dayHours从 Imnavait101119_110225 其中PAR_2029410_uE>1.9 按日期分组 我明白了是的,没错,这是一个北极地区 datePart sunrise sunset dayHours dayHoursHalf
07/09/2010 0:07:00 23:52:00 23:45:00 NULL
07/10/2010 0:07:00 23:52:00 23:45:00 NULL
07/11/2010 0:07:00 23:22:00 23:15:00 NULL
07/12/2010 1:37:00 23:52:00 22:15:00 NULL
07/13/2010 0:07:00 23:52:00 23:45:00 NULL
07/14/2010 0:07:00 23:52:00 23:45:00 NULL
07/15/2010 0:07:00 23:52:00 23:45:00 NULL
07/16/2010 0:07:00 23:52:00 23:45:00 NULL
07/17/2010 0:07:00 23:52:00 23:45:00 NULL
07/18/2010 0:07:00 23:52:00 23:45:00 NULL
07/19/2010 0:22:00 23:52:00 23:30:00 NULL
07/20/2010 0:07:00 23:52:00 23:45:00 NULL
07/21/2010 0:07:00 23:52:00 23:45:00 NULL
现在我有了TIMEDIFF值,我想把这个值除以2,加上日出,得到太阳正午。我创建了一个列来保存值,但似乎不知道如何获取它。我已经能够除以2或者乘以0.50,但是得到了非常奇怪的结果,通常是这样的
SELECT @dayHoursHalf := (dayHours * 0.50) as dayHoursHalf
来自Imnavait101119_110225_时间戳检查
我明白了:
dayHoursHalf
117250
117250
115750
110750
117250
117250
117250
117250
117250
117250
116500
117250
117250
117250
我甚至不知道从哪里开始——这些数字对我来说毫无意义,我也找不到任何关于如何为分数时间值编写查询代码的信息
非常感谢所有响应者 好吧,11.7250x2=23.45,这是你一天工作时间的价值。
如果我做对了,你需要把时间除以2,所以首先我认为最好用你的值减去23和45。这样你就可以得到正确的时间了。好吧,11.7250 x 2=23.45,这是你一天的时间值。
如果我做对了,你需要把时间除以2,所以首先我认为最好用你的值减去23和45。然后你就能得到正确的时间。如果理解正确,你可以这样做来选择你的值 选择q.*, ADDTIMEsunrise,秒到秒时间到秒秒天小时/2天小时半 从…起 选择datePart, 日出时分, MAXtimePart日落, TIMEDIFFMAXtimePart,MINtimePart dayHours 来自IMNAVAIT101119110225 其中PAR_2029410_uE>1.9 按日期分组 Q 样本输出: +------------+----------+----------+----------+---------------+ | datePart | sunrise | sunset | dayHours | dayHoursHalf | +------------+----------+----------+----------+---------------+ | 2010-07-09 | 00:07:00 | 23:52:00 | 23:45:00 | 11:59:30.0000 | | 2010-07-10 | 00:07:00 | 23:52:00 | 23:45:00 | 11:59:30.0000 | | 2010-07-11 | 00:07:00 | 23:22:00 | 23:15:00 | 11:44:30.0000 | | 2010-07-12 | 01:37:00 | 23:52:00 | 22:15:00 | 12:44:30.0000 | ...
这里是演示如果理解正确,您可以这样选择您的值 选择q.*, ADDTIMEsunrise,秒到秒时间到秒秒天小时/2天小时半 从…起 选择datePart, 日出时分, MAXtimePart日落, TIMEDIFFMAXtimePart,MINtimePart dayHours 来自IMNAVAIT101119110225 其中PAR_2029410_uE>1.9 按日期分组 Q 样本输出: +------------+----------+----------+----------+---------------+ | datePart | sunrise | sunset | dayHours | dayHoursHalf | +------------+----------+----------+----------+---------------+ | 2010-07-09 | 00:07:00 | 23:52:00 | 23:45:00 | 11:59:30.0000 | | 2010-07-10 | 00:07:00 | 23:52:00 | 23:45:00 | 11:59:30.0000 | | 2010-07-11 | 00:07:00 | 23:22:00 | 23:15:00 | 11:44:30.0000 | | 2010-07-12 | 01:37:00 | 23:52:00 | 22:15:00 | 12:44:30.0000 | ...
下面是演示编辑:我错误地计算了中午而不是半天,此查询将实现您真正想要的:
UPDATE Imnavait101119_110225_TimestampCheck
SET dayHoursHalf = SEC_TO_TIME(TIME_TO_SEC(dayHours)/2);
原件:
这个查询计算的是中午的时间,正好在日出和日落之间
更新Imnavait101119_110225_时间检查
将dayHoursHalf=秒设置为秒时间设置为秒日出
时间_至_SECdayHours/2;
请注意,出于某些原因,SQLfiddle显示时间值的虚拟日期:编辑:我错误地计算了中午而不是半天,此查询将执行您真正想要的操作:
UPDATE Imnavait101119_110225_TimestampCheck
SET dayHoursHalf = SEC_TO_TIME(TIME_TO_SEC(dayHours)/2);
原件:
这个查询计算的是中午的时间,正好在日出和日落之间
更新Imnavait101119_110225_时间检查
将dayHoursHalf=秒设置为秒时间设置为秒日出
时间_至_SECdayHours/2;
请注意,出于某些原因,SQLfiddle显示时间值的虚拟日期:谢谢你,peterm。这是一段漂亮的代码,看起来很接近,但对于某些数据点来说,它似乎不起作用:datePart |日出|日落|白天|白天半小时2010-08-19 | 05:07:00 | 21:22:00 | 16:15:00 | 13:14:30我不知道为什么它对某些数据点有效,而对其他数据点无效,也许我的原始数据有格式问题?不客气。你展示的一排有什么问题?白天时间='16:15:00';dayHours/2='08:07:30';日出'05:07:00'+'08:07:30'=13:14:30。依你的要求,这是正确的。你的代码比我的大脑还要复杂,彼得。我没有意识到您已经计算了实际的中午值,并且正在寻找减半的小时数,或者您显示的8:07:30小时数。你的回答是绝对正确的,我为理解你的答案太慢而道歉,这比我的问题要好。另外,我发现你的代码对不同的应用程序很有用,非常感谢你。谢谢你,彼得。这是一段漂亮的代码,看起来很接近,但对于某些数据点来说
它似乎不起作用:datePart | sunrise | sunset | dayHours | Half 2010-08-19 | 05:07:00 | 21:22:00 | 16:15:00 | 13:14:30我不知道为什么它对某些数据点有效,而对其他数据点无效,也许我的原始数据中存在格式问题?非常欢迎。你展示的一排有什么问题?白天时间='16:15:00';dayHours/2='08:07:30';日出'05:07:00'+'08:07:30'=13:14:30。依你的要求,这是正确的。你的代码比我的大脑还要复杂,彼得。我没有意识到您已经计算了实际的中午值,并且正在寻找减半的小时数,或者您显示的8:07:30小时数。你的回答是绝对正确的,我为理解你的答案太慢而道歉,这比我的问题要好。另外,我发现你的代码对不同的应用程序很有用,非常感谢你。谢谢你的回复,Joachim。这是一个非常简洁和优雅的查询,但它似乎并没有给我一个准确的白天时间减半。这是我查询的结果之一。我的原始数据可能有问题。dayHours=18:45:00 dayHoursHalf=12:44:30@velvetmonster哦,我想dayhourshalf应该设置在日出和日落之间的时间。。。更新…完美!!!!中午查询也很有用——我不知道它是中午值——非常感谢。谢谢你的回复,Joachim。这是一个非常简洁和优雅的查询,但它似乎并没有给我一个准确的白天时间减半。这是我查询的结果之一。我的原始数据可能有问题。dayHours=18:45:00 dayHoursHalf=12:44:30@velvetmonster哦,我想dayhourshalf应该设置在日出和日落之间的时间。。。更新…完美!!!!中午查询也非常有用-我不知道它是中午值-非常感谢。感谢您提供的这些信息,Jackerbil,它在将来可能会有用。感谢您提供的这些信息,Jackerbil,它在将来可能会有用。