Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
使用mySQL划分时间域_Mysql_Timestamp - Fatal编程技术网

使用mySQL划分时间域

使用mySQL划分时间域,mysql,timestamp,Mysql,Timestamp,我有一个包含一些数据的时间序列表,但时间戳偶尔会关闭。为了检查时间戳,我们已经手动定义日出和日落,用PAR光合有效辐射值来估计太阳正午,PAR告诉多少光进来,以确定黎明和黄昏,然后推断太阳中午在两者之间的中点。我们决定宣布PAR上升到1.9以上,通常是早上7点的记录是黎明,而PAR等于或小于1.9的记录被认为是黄昏。 我选择了1.9以上的PAR值,然后用一个组来找到每一天的最小值和最大时间值,这是: 选择datePart,MINtimePart作为日出, MAXtimePart作为日落, TIM

我有一个包含一些数据的时间序列表,但时间戳偶尔会关闭。为了检查时间戳,我们已经手动定义日出和日落,用PAR光合有效辐射值来估计太阳正午,PAR告诉多少光进来,以确定黎明和黄昏,然后推断太阳中午在两者之间的中点。我们决定宣布PAR上升到1.9以上,通常是早上7点的记录是黎明,而PAR等于或小于1.9的记录被认为是黄昏。

我选择了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,它在将来可能会有用。