ВЫСНОВА дату З MYSQL У PHP

Як вядома, у MySQL ёсць два асноўных тыпу дадзеных для захоўвання дат: date і datetime . Другі варыянт, па сутнасці, з'яўляецца пашыраным варыянтам першага і дазваляе акрамя даты захоўваць і час. Пры выманні з MySQL дадзеных такога тыпу мы атрымліваем радкі адпаведна наступных фарматаў:

2012-03-03 
2012-03-03 00:00:00

Аднак у PHP ў большасці функцыях працы з датамі выкарыстоўваецца так званы фармат даты Unix timestamp, які ўяўляе з сябе лік - колькасць секунд паміж "эпохай Юнікс" (у поўнач першага студзеня каляндарнага 1970 гады) і бягучых часам.

Можна пры дапамозе парсінга атрымаць з вышэйзгаданых радкоў значэння года, месяца і г.д. і перадаць іх у PHP-функцыю mktime , але я прапаную варыянт прасцей. Існуе MySQL-функцыя Unix_timestamp , якая дазваляе пераўтварыць дату з фармату MySQL ў фармат Unix timestamp на этапе запыту. Выкарыстоўваецца наступным чынам:

ВЫБРАЦЬ створаны як created_mysql, 
UNIX_TIMESTAMP (створана) А.С. created_unix
з вырабаў;

Поле created мае тып datetime. Пасля выканання такога запыту мы атрымаем значэння поля created ў двух фарматах - у фармаце MySQL (created_mysql) і ў фармаце Unix timestamp (created_unix). Другі варыянт можна адразу выкарыстоўваць непасрэдна ў PHP-функцыях працы з датамі, напрыклад:

рэха даты ( 'ДМГ', $ радкі [ 'created_unix']);

ці нават у функцыі фарміравання рускай даты:

рэха rusdate ($ радкі [ 'created_unix'], '% DAYWEEK%, J% МЕСЯЦ% Y, G: Я');

PHP пераўтварыць дату з фармату MYSQL У ЗВЫЧАЙНЫ выгляд ...

У мяне ёсць поле даты ў php, якое выкарыстоўвае гэты код:

Як мне пераўтварыць гэта ў фармат MySql 0000-00-00 для ўключэння ў db. Ці з'яўляецца гэта па радках: date ( 'Ymd' strtotime ($ date). Прычына, пра якую я прашу, заключаецца ў тым, што я спрабаваў варыянты гэтага, і я не магу прымусіць яго працаваць. Альбо адлюстроўваецца як 1970, альбо якой- то іншы варыянт з гэтага. Вялікі дзякуй

Чытай яшчэ:   1С ЗЛУЧЭННІ ЗАКРЫТО сервера

40

PHP MySQL

зададзены bollo 22 ліпеня '11 ў 16:45

крыніца падзяліцца

1. Калі ваш слупок MySQL DATEувядзіце:

$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));

2. Калі ў Стоўбцах MySQL DATETIMEувядзіце:

$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));

Вам не трэба працаваць strototime(), таму што ён не будзе працаваць з падзельнікамі dash -, ён паспрабуе зрабіць адніманне.

Абнавіць , таму што Ваш дата адфарматыраваная, вы не можаце выкарыстоўваць strtotime(), замест гэтага выкарыстоўвайце гэты код:

$date = preg_replace('#(\\d{2})/(\\d{2})/(\\d{4})\\s(.*)#', '$3-$2-$1 $4', $date);
echo $date;

выснову:

120

адказ дадзены Shef 22 ліпеня '11 ў 16:54

крыніца падзяліцца

У гэтага сайта ёсць два даволі простых рашэння - проста праверце код, я падаў апісання на выпадак, калі вы захочаце, - зэканоміць вам некалькі клікаў.

http://www.richardlord.net/blog/dates-in-php-and-mysql

1. Адным з распаўсюджаных рашэнняў з'яўляецца захаванне дат у палях DATETIME і выкарыстанне функцый date () і strtotime () PHP для пераўтварэння паміж пазнакамі часу PHP і MySQL DATETIME. Метады будуць выкарыстоўвацца наступным чынам:

$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );

2. Наш другі варыянт - дазволіць MySQL выконваць гэтую працу. У MySQL ёсць функцыі, якія мы можам выкарыстоўваць для пераўтварэння дадзеных у той момант, калі мы звяртаемся да базы дадзеных. UNIX_TIMESTAMP будзе канвертаваць з DATETIME ў часовую пазнаку PHP, а FROM_UNIXTIME будзе канвертаваць з часовай пазнакі PHP ў DATETIME. Метады выкарыстоўваюцца ў SQL-запыце. Таму мы ўстаўляем і абнаўляем даты з дапамогай такіх запытаў, як гэта -

$query = "UPDATE table SET
datetimefield = FROM_UNIXTIME($phpdate)
WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
FROM table WHERE...";

13

адказ дадзены John Humphreys - w00te 22 ліпеня '11 ў 16.50

крыніца падзяліцца

Чытай яшчэ:   СТВАРЫЦЬ НОВЫ САЙТ НА TIMEWEB

Вы шукаеце функцыі MySQL FROM_UNIXTIME()і UNIX_TIMESTAMP().

Выкарыстоўвайце іх у сваім SQL, напрыклад:

mysql> SELECT UNIX_TIMESTAMP(NOW());
+-----------------------+
| UNIX_TIMESTAMP(NOW()) |
+-----------------------+
| 1311343579 |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT FROM_UNIXTIME(1311343579);
+---------------------------+
| FROM_UNIXTIME(1311343579) |
+---------------------------+
| 2011-07-22 15:06:19 |
+---------------------------+
1 row in set (0.00 sec)

4

адказ дадзены Gus 22 ліпеня '11 ў 16:49

крыніца падзяліцца

4

адказ дадзены Bailey Parker 22 ліпеня '11 ў 16:52

крыніца падзяліцца

Калі ў вас ёсць дата ў фармаце dd / mm / yyyy, выкарыстоўвайце наступную каманду:

$date = explode('/', $_POST['posted_date']);
$new_date = $date[2].'-'.$date[1].'-'.$date[0];

Калі ў вас гэта ў мм / дд / гггг, проста зменіце другі радок:

$new_date = $date[2].'-'.$date[0].'-'.$date[1];

3

адказ дадзены Warren Sergent 08 февр. '12 у 11:36

крыніца падзяліцца

Калі вы ведаеце фармат даты ў $ _POST [incoming_date], вы можаце выкарыстоўваць explode для атрымання года, месяца і часу, а затым аб'яднаць, каб сфармаваць сапраўдную дату mySql. напрыклад, калі вы атрымліваеце нешта накшталт 12/15/1988 у дзень, вы можаце зрабіць гэта наступным чынам

    $date = explode($_POST['intake_date'], '/');
mysql_date = $date[2].'-'$date[1].'-'$date[0];

хоць калі ў вас ёсць сапраўдная дата даты ( 'ym-d', strtotime ($ date)); таксама павінны працаваць

1

адказ дадзены Ehtesham 22 ліпеня '11 ў 16:58

крыніца падзяліцца

PHP 5.3 мае функцыі для стварэння і перафарматавання аб'екта DateTime з любога фармату, які вы паказваеце:

$mysql_date = "2012-01-02";   // date in Y-m-d format as MySQL stores it
$date_obj = date_create_from_format('Y-m-d',$mysql_date);
$date = date_format($date_obj, 'm/d/Y');
echo $date;

выхады:

01/02/2012

MySQL таксама можа кіраваць фарматаваннем з дапамогай функцыі STR_TO_DATE()пры ўстаўцы / абнаўленні і DATE_FORMAT()пры запыце.

$php_date = "01/02/2012";
$update_query = "UPDATE appointments SET start_time = STR_TO_DATE('" . $php_date . "', '%m/%d/%Y')";
$query = "SELECT DATE_FORMAT(start_time,'%m/%d/%Y') AS start_time FROM appointments";

1

адказ дадзены Charlie 25 каст. '14 у 0:19

крыніца падзяліцца

Чытай яшчэ:   Драйверы ЗБОРКА ДЛЯ WINDOWS 10

function my_date_parse($date)
{
if (!preg_match('/^(\\d+)\\.(\\d+)\\.(\\d+)$/', $date, $m))
return false;

$day = $m[1];
$month = $m[2];
$year = $m[3];

if (!checkdate($month, $day, $year))
return false;

return "$year-$month-$day";
}

1

адказ дадзены TMS 22 ліпеня '11 ў 16:51

крыніца падзяліцца

Чытай на іншых мовах

 беларускіанглійская Нямецкі іспанскі французскі італьянскі партугальская турэцкі арабская ўкраінскі шведскі венгерская балгарскі эстонскі Кітайскі (спрошчаны) в'етнамская румынская тайская славенская славацкая сербская малайская нарвежская латышская Літоўскі карэйская японскі інданезійская хіндзі іўрыт фінскі грэцкі нідэрландская чэшскі дацкая харвацкая Кітайскі (традыцыйны) тагальская урду Азейбарджанский армянскіпольскі бенгальская грузінскі казахскі каталонская Mongolski руская Таджитский Tamil'skij тэлугу Узбецкий

дадаць каментар

Ваш e-mail не будзе апублікаваны. Абавязковыя палі пазначаныя *