Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP mysql формат за вмъкване на дата

Както е посочено в Литерали за дата и час :

MySQL разпознава ДАТА стойности в следните формати:

  • Като низ в 'ГГГГ-ММ-ДД' или 'ГГ-ММ-ДД' формат. Разрешен е „спокоен“ синтаксис:Всеки препинателен знак може да се използва като разделител между частите за дата. Например, '2012-12-31' , '2012/12/31' , '2012^12^31' и '[email protected] @31' са еквивалентни.

  • Като низ без разделители в 'ГГГГММДД' или 'ГГММДД' формат, при условие че низът има смисъл като дата. Например, '20070523' и '070523' се интерпретират като '2007-05-23' , но '071332' е незаконен (има безсмислени части за месец и ден) и става '0000-00-00' .

  • Като число в ГГГГММДД или ГГММДД формат, при условие че числото има смисъл като дата. Например 19830905 и 830905 се интерпретират като '1983-09-05' .

Следователно низът '08/25/2012' не е валиден литерал за дата на MySQL. Имате четири опции (в някакъв неясен ред на предпочитания, без допълнителна информация за вашите изисквания):

  1. Конфигурирайте Datepicker да предоставя дати в поддържан формат, като използвате altField заедно с неговия altFormat опция :

    <input type="hidden" id="actualDate" name="actualDate"/>
    
    $( "selector" ).datepicker({
        altField : "#actualDate"
        altFormat: "yyyy-mm-dd"
    });
    

    Или, ако се радвате потребителите да видят датата в ГГГГ-ММ-ДД формат, просто задайте dateFormat опция вместо това:

    $( "selector" ).datepicker({
        dateFormat: "yyyy-mm-dd"
    });
    
  2. Използвайте MySQL STR_TO_DATE( ) функция за преобразуване на низа:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
    
  3. Преобразувайте низа, получен от jQuery, в нещо, което PHP разбира като дата, като Дата и час обект:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    

    и след това или:

    • получите подходящ форматиран низ:

      $date = $dt->format('Y-m-d');
      
    • получите клеймото за време на UNIX:

      $timestamp = $dt->getTimestamp();
      

      който след това се предава директно на FROM_UNIXTIME() функция:

      INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
      
  4. Ръчно манипулирайте низа във валиден литерал:

    $parts = explode('/', $_POST['date']);
    $date  = "$parts[2]-$parts[0]-$parts[1]";
    

Предупреждение

  1. Кодът ви е уязвим към SQL инжекция. Вие наистина трябва да използва подготвени отчети , в който предавате вашите променливи като параметри, които не се оценяват за SQL. Ако не знаете за какво говоря или как да го поправите, прочетете историята на Таблици Боби .

  2. Също така, както е посочено в въведението към главата на ръководството за PHP на mysql_* функции:

    Това разширение е остаряло от PHP 5.5.0 и не се препоръчва за писане на нов код, тъй като ще бъде премахнато в бъдеще. Вместо това или mysqli или PDO_MySQL трябва да се използва разширение. Вижте също Преглед на MySQL API за допълнителна помощ при избора на MySQL API.

  3. Изглежда, че използвате или DATETIME или TIMESTAMP колона за съхраняване на стойност за дата; Препоръчвам ви да обмислите използването на DATE на MySQL вместо това въведете. Както е обяснено в DATE , DATETIME и TIMESTAMP Видове :

    DATE типът се използва за стойности с част от дата, но без част от време. MySQL извлича и показва стойности за DATE в 'ГГГГ-ММ-ДД' формат. Поддържаният диапазон е '1000-01-01' до '9999-12-31' .

    DATETIME типът се използва за стойности, които съдържат части за дата и час. MySQL извлича и показва DATETIME стойности в 'ГГГГ-ММ-ДД ЧЧ:ММ:СС' формат. Поддържаният диапазон е '1000-01-01 00:00:00' до '9999-12-31 23:59:59' .

    TIMESTAMP типът данни се използва за стойности, които съдържат части за дата и час. TIMESTAMP има диапазон от '1970-01-01 00:00:01' UTC до '2038-01-19 03:14:07' UTC.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановяване на изтрития 'root' потребител и парола за MySQL

  2. mySQL конвертира varchar към дата

  3. CHAR() Примери в MySQL

  4. ГРЕШКА 1130 (HY000):Хост '' не е разрешен да се свързва с този MySQL сървър

  5. JSON_KEYS() – Връща ключовете от JSON обект в MySQL