Как извлекать годы, месяцы, дни, часы, минуты, секунды с даты mysql?

В моей базе данных mysql у меня есть такие даты: 2011-01-06 09: 39: 114525

и мне нужно дополнительно указывать годы, месяцы, дни, часы, минуты, секунды.

Поэтому мне нужно извлечь из приведенного выше примера:

2011
01
06
09
39
11

Как я могу это сделать?

Ответы

Ответ 1

В MySQL просто сделайте MONTH(date), YEAR(date) и т.д. В PHP вы можете сделать date('g', strtotime($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);

Ответ 2

Отметьте эту ссылку http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

ADDDATE()   Add time values (intervals) to a date value

ADDTIME()   Add time

CONVERT_TZ()    Convert from one timezone to another

CURDATE()   Return the current date

CURRENT_DATE(), CURRENT_DATE    Synonyms for CURDATE()

CURRENT_TIME(), CURRENT_TIME    Synonyms for CURTIME()

CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP  Synonyms for NOW()

CURTIME()   Return the current time

DATE_ADD()  Add time values (intervals) to a date value

DATE_FORMAT()   Format date as specified

DATE_SUB()  Subtract a time value (interval) from a date

DATE()  Extract the date part of a date or datetime expression

DATEDIFF()  Subtract two dates

DAY()   Synonym for DAYOFMONTH()

DAYNAME()   Return the name of the weekday

DAYOFMONTH()    Return the day of the month (0-31)

DAYOFWEEK()     Return the weekday index of the argument

DAYOFYEAR()     Return the day of the year (1-366)

EXTRACT()   Extract part of a date

FROM_DAYS()     Convert a day number to a date

FROM_UNIXTIME()     Format UNIX timestamp as a date

GET_FORMAT()    Return a date format string

HOUR()  Extract the hour

LAST_DAY    Return the last day of the month for the argument

LOCALTIME(), LOCALTIME  Synonym for NOW()

LOCALTIMESTAMP, LOCALTIMESTAMP()    Synonym for NOW()

MAKEDATE()  Create a date from the year and day of year

MAKETIME    MAKETIME()

MICROSECOND()   Return the microseconds from argument

MINUTE()    Return the minute from the argument

MONTH()     Return the month from the date passed

MONTHNAME()     Return the name of the month

NOW()   Return the current date and time

PERIOD_ADD()    Add a period to a year-month

PERIOD_DIFF()   Return the number of months between periods

QUARTER()   Return the quarter from a date argument

SEC_TO_TIME()   Converts seconds to 'HH:MM:SS' format

SECOND()    Return the second (0-59)

STR_TO_DATE()   Convert a string to a date

SUBDATE()   A synonym for DATE_SUB() when invoked with three arguments

SUBTIME()   Subtract times

SYSDATE()   Return the time at which the function executes

TIME_FORMAT()   Format as time

TIME_TO_SEC()   Return the argument converted to seconds

TIME()  Extract the time portion of the expression passed

TIMEDIFF()  Subtract time

TIMESTAMP()     With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments

TIMESTAMPADD()  Add an interval to a datetime expression

TIMESTAMPDIFF()     Subtract an interval from a datetime expression

TO_DAYS()   Return the date argument converted to days

TO_SECONDS()    Return the date or datetime argument converted to seconds since Year 0

UNIX_TIMESTAMP()    Return a UNIX timestamp

UTC_DATE()  Return the current UTC date

UTC_TIME()  Return the current UTC time

UTC_TIMESTAMP()     Return the current UTC date and time

WEEK()  Return the week number

WEEKDAY()   Return the weekday index

WEEKOFYEAR()    Return the calendar week of the date (0-53)

YEAR()  Return the year

YEARWEEK()  Return the year and week

Ответ 3

Лучший способ использования класса 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');

Ответ 4

$dt = Carbon::now();
$dt->timestamp = strtotime($mysqlVarDatetime); //like '2017-01-31 07:19:11' string cad

это может быть результатом:

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)

Ресурс для получения дополнительной информации Углеродная библиотека: http://carbon.nesbot.com/docs/#api-getters

Ответ 5

Старый поток, но я не мог устоять перед публикацией очевидного решения "грубой силы":

Если ваш строковый формат даты в формате 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.