Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Php 如何从mysql日期提取年、月、日、小时、分钟、秒?_Php_Mysql - Fatal编程技术网

Php 如何从mysql日期提取年、月、日、小时、分钟、秒?

Php 如何从mysql日期提取年、月、日、小时、分钟、秒?,php,mysql,Php,Mysql,在我的mysql数据库中,我有如下日期:2011-01-06 09:39:114525 我需要分别从中提取年、月、日、时、分、秒 因此,我需要从上述示例中提取: 2011 01 06 09 39 11 我该怎么做呢?在MySQL中,只需执行月(日)、年(日)等操作。在PHP中,您可以执行日期('g',strotime($datefromsql))来获取从日期算起的12小时格式 在上面的例子中,你可以 SELECT YEAR(date), MONTH(date),

在我的mysql数据库中,我有如下日期:2011-01-06 09:39:114525

我需要分别从中提取年、月、日、时、分、秒

因此,我需要从上述示例中提取:

2011
01
06
09
39
11

我该怎么做呢?

在MySQL中,只需执行
月(日)
年(日)
等操作。在PHP中,您可以执行
日期('g',strotime($datefromsql))
来获取从日期算起的12小时格式

在上面的例子中,你可以

SELECT YEAR(date), 
       MONTH(date), 
       DAYOFMONTH(date), 
       HOUR(date), 
       MINUTE(date), 
       SECOND(date)
或者用PHP

$time = strtotime($datefromsql);
echo date('Y', $time);
echo date('m', $time);
echo date('d', $time);
echo date('h', $time);
echo date('i', $time);
echo date('s', $time);
检查此链接


使用DateTime类的最佳方法

$my_sql_date = '2011-01-06 09:39:11';
$date_time = new DateTime($my_sql_date);
echo $date_time->format('Y').PHP_EOL;
echo $date_time->format('m').PHP_EOL;
echo $date_time->format('d').PHP_EOL;
echo $date_time->format('h').PHP_EOL;
echo $date_time->format('i').PHP_EOL;
echo $date_time->format('s');
其结果可能是:

var_dump($dt->year);                                         // int(2017)
var_dump($dt->month);                                        // int(1)
var_dump($dt->day);                                          // int(31)
var_dump($dt->hour);                                         // int(7)
var_dump($dt->minute);                                       // int(19)
var_dump($dt->second);                                       // int(11)

参考资料获取更多信息碳库:

旧线程,但我忍不住发布了明显的“暴力”解决方案:

如果SQL日期时间字符串格式始终如示例中所示,并且您不想使用日期时间函数/类,则可以执行以下操作:

$mysql_datetime = "2011-01-06 09:39:114525";
list($date, $time) = explode(' ', $mysql_datetime);
list($year, $month, $day) = explode('-', $date);
list($hr, $min, $sec) = explode(':', $time);
$sec = (int)substr($sec, 0, 2);

您想要的值现在在以下变量中可用:
$year、$month、$day、$hr、$min、$sec

我想建议一种更干净的方法。这可以在不使用任何库或框架的情况下实现

首先,您应该将datetime字符串转换为时间戳(
strotime
适用于几乎所有格式)。然后使用
getdate
,如下所示:

$dateAsTimestamp = strtotime("2011-01-06 09:39:11.45");
$dateTime = getdate($dateAsTimestamp);
函数以关联数组的形式返回日期和时间的所有组件

Array
(
    [seconds] => 11
    [minutes] => 39
    [hours] => 9
    [mday] => 6
    [wday] => 4
    [mon] => 1
    [year] => 2011
    [yday] => 5
    [weekday] => Thursday
    [month] => January
    [0] => 1294306751
)
现在可以根据您的要求访问

echo($dateTime['hours']);
echo($dateTime['minutes']);
echo($dateTime['seconds']);

$MONTH = $dateTime['month'];
更多关于日期/时间功能的信息-和

Array
(
    [seconds] => 11
    [minutes] => 39
    [hours] => 9
    [mday] => 6
    [wday] => 4
    [mon] => 1
    [year] => 2011
    [yday] => 5
    [weekday] => Thursday
    [month] => January
    [0] => 1294306751
)
echo($dateTime['hours']);
echo($dateTime['minutes']);
echo($dateTime['seconds']);

$MONTH = $dateTime['month'];