2013-04-20 3 views
1

Я пытаюсь выполнить t0 подстроку в DATETIME, значение DATETIME извлекается из базы данных через mysql.Подстрока в php через значение, полученное из базы данных

Пример:

DATETIME: 2013-07-31 12:30:60 Год: 2013 Месяц: 07 день: 31 час: 12 минут : 30

Мой ниже код делает не работа. Как мне это сделать?

<?php 
$sql = "SELECT * FROM auctionItem;"; 
     // Write a statement to open a connection to MySQL server 
     $link = mysql_connect("localhost:3306", "root", "gfg"); 
     // Write a statement to select the required database 
     mysql_select_db("KXCLUSIVE", $link); 
     // Write a statement to send the SQL statement to the MySQL server for execution and retrieve the resultset 
     $resultset = mysql_query($sql); 
     // Write a statement to close the connection 
     mysql_close($link); 

    $dateTime = $row["startTime"]; 
    $year = substr($dateTime, 0,4); 
    $month = substr($dateTime, 5,7); 
    $day = substr($dateTime, 8,10); 
    $hour = substr($dateTime, 11,13); 
    $minute = substr($dateTime, 14,16); 
    echo "year " .$year."<br></br>"; 
    echo "month " .$month."<br></br>"; 
    echo "day " .$day."<br></br>"; 
    echo "hour " .$hour."<br></br>"; 
    echo "minute " .$minute."<br></br>"; 
    ?> 
+0

Что столбец '$ строка [ "начальный промежуток"]' хранятся как? MySQL также имеет функции даты. – nickhar

+0

, если вы используете PHP> = 5.2 .. лучший способ сделать это - использовать datetime :: format .. проверить это http://us3.php.net/datetime.format – Dinesh

+0

@Dinesh Datetime существует с PHP 5.3 нет 5.2 – bwoebi

ответ

2

substr хочет в качестве третьего параметра длина, не позиция, где остановиться.

Правильно будет:

$year = substr($dateTime, 0,4); 
$month = substr($dateTime, 5,2); 
$day = substr($dateTime, 8,2); 
$hour = substr($dateTime, 11,2); 
$minute = substr($dateTime, 14,2); 
+0

как раз вот-вот ответит этим. Второе значение в substr - это длина, а не позиция – Silvertiger

1

Используйте DateTime класс для этого:

$dt = new DateTime('2013-07-31 12:30:60'); 
echo "year " .$dt->format('Y')."<br></br>"; 
echo "month " .$dt->format('m')."<br></br>"; 
echo "day " .$dt->format('d')."<br></br>"; 
echo "hour " .$dt->format('H')."<br></br>"; 
echo "minute " .$dt->format('i')."<br></br>"; 
0

Ваш код имеет недостающую часть:

<?php 
    $sql = "SELECT * FROM auctionItem;"; 
     // Write a statement to open a connection to MySQL server 
     $link = mysql_connect("localhost:3306", "root", "gfg"); 
     // Write a statement to select the required database 
     mysql_select_db("KXCLUSIVE", $link); 
     // Write a statement to send the SQL statement to the MySQL server for execution and retrieve the resultset 
     $resultset = mysql_query($sql); 
     // Write a statement to close the connection 
     $row = mysql_fetch_assoc($resultset); //this was lost 
     mysql_close($link); 

    $dateTime = $row["startTime"]; 
    $year = substr($dateTime, 0,4); 
    $month = substr($dateTime, 5,7); 
    $day = substr($dateTime, 8,10); 
    $hour = substr($dateTime, 11,13); 
    $minute = substr($dateTime, 14,16); 
    echo "year " .$year."<br></br>"; 
    echo "month " .$month."<br></br>"; 
    echo "day " .$day."<br></br>"; 
    echo "hour " .$hour."<br></br>"; 
    echo "minute " .$minute."<br></br>"; 
?> 

PS: Dont расширение использования MySQL. ... для mysqli или PDO вместо

0

Использование strtotime():

$time = '2013-07-31 12:30:60'; 
$timestamp = strtotime($time); 

$year = date('Y', $timestamp); 
$month = date('m', $timestamp); 
$day = date('d', $timestamp); 
$hour = date('H', $timestamp); 
$minute = date('i', $timestamp); 
$second = date('s', $timestamp); 

echo $year.' '.$month.' '.$day.' '.$hour.' '.$minute.' '.$second.'<br>'; 

Использование preg_split():

Тип
$time = '2013-07-31 12:30:60'; 
list($year, $month, $day, $hour, $minute, $second) = preg_split('/-|:|\s/', $time); 
echo $year.' '.$month.' '.$day.' '.$hour.' '.$minute.' '.$second; 
Смежные вопросы