Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Định dạng ngày chèn mysql PHP

Như đã nêu trong Chữ viết theo ngày và giờ :

MySQL nhận dạng DATE giá trị ở các định dạng sau:

  • Dưới dạng một chuỗi trong 'YYYY-MM-DD' hoặc 'YY-MM-DD' định dạng. Cho phép cú pháp "thoải mái":Bất kỳ ký tự dấu câu nào cũng có thể được sử dụng làm dấu phân cách giữa các phần ngày tháng. Ví dụ: '2012-12-31' , '2012/12/31' , '2012 ^ 12 ^ 31' ' [email protected] @ 31 ' tương đương.

  • Là một chuỗi không có dấu phân tách trong 'YYYYMMDD' hoặc 'YYMMDD' , miễn là chuỗi có ý nghĩa như một ngày tháng. Ví dụ: '20070523' '070523' được hiểu là '2007-05-23' , nhưng '071332' là bất hợp pháp (nó có các phần tháng và ngày vô nghĩa) và trở thành '0000-00-00' .

  • Dưới dạng một số trong YYYYMMDD hoặc YYMMDD định dạng, miễn là con số có ý nghĩa như một ngày tháng. Ví dụ: 19830905 830905 được hiểu là '1983-09-05' .

Do đó, chuỗi '08 / 25/2012 ' không phải là một nghĩa đen ngày MySQL hợp lệ. Bạn có bốn tùy chọn (theo một số thứ tự tùy chọn mơ hồ, không có thêm bất kỳ thông tin nào về yêu cầu của bạn):

  1. Định cấu hình Datepicker để cung cấp ngày ở định dạng được hỗ trợ bằng cách sử dụng altField cùng với altFormat của nó tùy chọn :

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

    Hoặc, nếu bạn vui lòng cho người dùng xem ngày trong YYYY-MM-DD định dạng, chỉ cần đặt dateFormat tùy chọn thay vào đó:

    $( "selector" ).datepicker({
        dateFormat: "yyyy-mm-dd"
    });
    
  2. Sử dụng STR_TO_DATE ( ) hàm để chuyển đổi chuỗi:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
    
  3. Chuyển đổi chuỗi nhận được từ jQuery thành chuỗi mà PHP hiểu là ngày tháng, chẳng hạn như DateTime đối tượng:

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

    và sau đó:

    • lấy một chuỗi có định dạng phù hợp:

      $date = $dt->format('Y-m-d');
      
    • lấy dấu thời gian UNIX:

      $timestamp = $dt->getTimestamp();
      

      sau đó được chuyển trực tiếp đến FROM_UNIXTIME () chức năng:

      INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
      
  4. Thao tác thủ công chuỗi thành một ký tự hợp lệ:

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

Cảnh báo

  1. Mã của bạn dễ bị chèn SQL. Bạn thực sự nên sử dụng câu lệnh chuẩn bị , vào đó bạn chuyển các biến của mình dưới dạng các tham số không được đánh giá cho SQL. Nếu bạn không biết tôi đang nói gì hoặc cách khắc phục, hãy đọc câu chuyện về Bàn Bobby .

  2. Ngoài ra, như đã nêu trong phần giới thiệu đến chương hướng dẫn sử dụng PHP trên mysql_ * chức năng:

    Tiện ích mở rộng này không được dùng nữa kể từ PHP 5.5.0 và không được khuyến nghị để viết mã mới vì nó sẽ bị xóa trong tương lai. Thay vào đó, mysqli hoặc PDO_MySQL phần mở rộng nên được sử dụng. Xem thêm Tổng quan về API MySQL để được trợ giúp thêm khi chọn MySQL API.

  3. Có vẻ như bạn đang sử dụng DATETIME hoặc TIMESTAMP cột để giữ giá trị ngày tháng; Tôi khuyên bạn nên cân nhắc sử dụng DATE của MySQL gõ thay thế. Như đã giải thích trong DATE , DATETIME TIMESTAMP Các loại :

    DATE kiểu được sử dụng cho các giá trị có phần ngày nhưng không có phần thời gian. MySQL truy xuất và hiển thị các giá trị DATE trong 'YYYY-MM-DD' định dạng. Phạm vi được hỗ trợ là '1000-01-01' thành '9999-12-31' .

    DATETIME kiểu được sử dụng cho các giá trị chứa cả phần ngày và giờ. MySQL truy xuất và hiển thị DATETIME các giá trị trong 'YYYY-MM-DD HH:MM:SS' định dạng. Phạm vi được hỗ trợ là '1000-01-01 00:00:00' tới '9999-12-31 23:59:59' .

    TIMESTAMP kiểu dữ liệu được sử dụng cho các giá trị chứa cả phần ngày và giờ. TIMESTAMP có phạm vi '1970-01-01 00:00:01' UTC đến '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. Thay đổi số bắt đầu tăng tự động?

  2. Giao dịch Codeigniter

  3. Tăng tốc độ đếm hàng trong MySQL

  4. Cơ sở dữ liệu người dùng MySQL không có cột mật khẩu - Cài đặt MySQL trên OSX

  5. Làm cách nào để có được danh sách các khung nhìn MySQL?