如何从PHP时间字符串中仅提取小时数据?

如何从PHP时间字符串中仅提取小时数据?,php,mysql,Php,Mysql,我在数据库中收集了一组时间记录,格式为“09:51:06”(小时、分钟、秒) 我有一个查询,它从数据库中检索这些时间,但我只关心小时引用 我怎样才能去掉字符串的其余部分,并在数组中只添加一个小时?在上面的例子中,我只想保留'09' 我已经研究过爆炸和子串,但似乎还没弄清楚 谢谢。分解字符串的方式如下(您可能希望添加intval()以将其用作实数): 但是,您可能正在寻找正确的查询,而不是事后再这样做。如果您处理的是时间类型,那么可以使用MySQL(HOUR()在本例中): 或者从数据库本身 SE

我在数据库中收集了一组时间记录,格式为“09:51:06”(小时、分钟、秒)

我有一个查询,它从数据库中检索这些时间,但我只关心小时引用

我怎样才能去掉字符串的其余部分,并在数组中只添加一个小时?在上面的例子中,我只想保留'09'

我已经研究过爆炸和子串,但似乎还没弄清楚


谢谢。

分解字符串的方式如下(您可能希望添加
intval()
以将其用作实数):

但是,您可能正在寻找正确的查询,而不是事后再这样做。如果您处理的是时间类型,那么可以使用MySQL(
HOUR()
在本例中):


或者从数据库本身

SELECT TIME_FORMAT(field_name, '%H') as return_hour from table_name

我想您可以通过字符串操作或时间/日期来实现这一点。任何有价值的日期方式都是在SQL端,PHP有mktime和date函数,但是如果您要构建一个日期,那么您就可以在中途找到所需的时间

$thisHour = array_shift(explode(':', $timeString));  //this gets hour
$thisHour - substr($timeString, 0, 2);              // or this
$hours[] = $thisHour;                               //this adds to array
$time_string='09:51:06'; $your_array[$array_index]=substr($time_string,0,2);

该列是什么数据类型?永远不要将数据库中的日期记录为字符串:它需要更多字节,而且更难管理,您很容易陷入这样的问题。使用时间戳格式,这样您就可以使用date()或其他函数,并像php一样轻松地获取所需内容。我同意数据库解决方案。但是,如果必须使用代码,则
$h=substr($time,0,2)
是微不足道的。感谢您的建议,我以前从未遇到过这种SQL。这将中断:
$hours=array_shift(explode(':','09:51:06')因为您无法将函数结果直接传递给通过引用接收其参数的另一个函数(
array\u shift()
)。也可以像
SELECT HOUR(field\u name)…一样重新写入。使您选择的内容更加明确,而不必记住所有格式字符串。
SELECT TIME_FORMAT(field_name, '%H') as return_hour from table_name
$thisHour = array_shift(explode(':', $timeString));  //this gets hour
$thisHour - substr($timeString, 0, 2);              // or this
$hours[] = $thisHour;                               //this adds to array
$time_string='09:51:06'; $your_array[$array_index]=substr($time_string, 0, 2);