2010-09-14 37 views
9

Tôi đã được cung cấp tệp csv có chứa một xuất khẩu bảng cơ sở dữ liệu của khách hàng. Hai trong số các cột là ngày và trong tệp chúng được định dạng là dd/mm/yyyy.làm thế nào để làm cho phpMyAdmin nhập datetime một cách chính xác từ csv?

ID | ActivateDate 
----------------- 
1 | 05/22/2010 
2 | 10/01/2010 

Cơ sở dữ liệu mySQL của chúng tôi mà tôi cần nhập vào có các cột được định nghĩa là datetime, với giá trị mặc định là rỗng. Khi tôi sử dụng chức năng nhập khẩu trong phpMyAdmin, nó thiết lập tất cả các cột ngày trong các bản ghi đã nhập thành 0000-00-00 00:00:00, bất kể có giá trị nào trong tệp nhập hay không.

Bất cứ ai có thể cho tôi biết những gì tôi cần làm để có được cột ActivateDate trong cơ sở dữ liệu được đặt thành 2010-05-22 00:00:00 thay vì 0000-00-00 00:00:00?

Trả lời

9

Nếu có thể, tôi sẽ nhập các giá trị đó vào cột VARCHAR fake_column trước, sau đó đẩy chúng vào cột thực real_column sử dụng STR_TO_DATE.

UPDATE tablename SET real_column = STR_TO_DATE(fake_column, '%m/%d/%Y'); 

Reference on how to build the format string

+0

Cảm ơn. Vì vậy, tôi đã làm việc nhập khẩu vào cột varp temp, và đó đã làm việc. Nhưng khi tôi đã làm điều này: UPDATE arrc_Voucher SET 'ActivatedDT' = STR_TO_DATE (ActivatedDTtmp, '% Y-% m-% d% H:% m:% s') cột ActivatedDT (cột datetime thực) vẫn là null và myPHPAdmin truy vấn khu vực nói "0 hàng bị ảnh hưởng". Bất kỳ ý tưởng? – EmmyS

+0

@EmmyS no, nếu định dạng đến của bạn là '05/22/2010', bạn cần sử dụng ký pháp mà tôi đã trình bày ở trên. Đó là định nghĩa cho dữ liệu * đến * –

+0

Cảm ơn. Tôi nghĩ bởi vì bạn đã đưa ra tham chiếu về việc xây dựng chuỗi định dạng mà tôi đã định thay đổi định dạng. – EmmyS

6

Tôi chỉ có thể làm điều này bằng cách thay đổi các trường ngày để chỉnh định dạng yy-mm-dd. (FORMAT> TẾ BÀO> Tùy chỉnh> yy-mm-dd.

tôi phải lưu nó như một XLS nhưng đã có thể nhập nó một cách chính xác trực tiếp vào bảng sử dụng PHPMyAdmin phiên bản 3.3.10

+0

Is4680, đó là tốt cho đến khi bạn có nhiều hơn nói 65.000 hàng. Nó trở nên quá lớn đối với hầu hết các phiên bản Office để xử lý. –

+1

Cảm ơn bạn. Đây là giải pháp tốt nhất. Nhưng tôi đã làm nó với format-> cells-> date sau đó bằng cách chọn giải pháp UK – Ruwantha

+0

Bes, nên là câu trả lời được chấp thuận. – Sandhu

3

Nếu bạn có nộp trong một định dạng CSV mở nó lên vào excel.

  1. Nhấp chuột phải vào tiêu đề cột chứa ngày tháng.
  2. Chọn Format Cells
  3. Nhấp vào "Custom" loại
  4. Dán "yyyy-mm-dd h: mm: ss" vào hộp nhập.
  5. Lưu tài liệu.
  6. Nhập vào bảng bằng cách sử dụng phpMyAdmin
+0

Đây chính là cách tôi đã làm nó quá sau khi thử và thất bại với câu trả lời được chấp nhận. Điều này dường như dễ dàng hơn cho tôi .. – nematoth

+0

Không phải là một tùy chọn, nếu bạn không có excel và/hoặc tệp csv quá lớn – user664769

Các vấn đề liên quan