2015-04-21 12 views
5

Vì vậy, im gặp một vấn đề khá lạ, tôi có một Cột (cho phép nói Cột A) trong excel có dữ liệu trông như thế này:SQL DATETIME Chèn từ Excel?

4/11/2015 10:14

Tôi có một bó các cột khác, nhưng dù sao trong Chèn câu lệnh SQL của tôi trong excel, dữ liệu (khi sao chép ra) trông như thế này: 42105,4561921296

các = "INSERT INTO TABLE VALUES ('" & A1 & "', Etc .. ..) "có định dạng dữ liệu" chung "và cột Ngày ở định dạng" Tùy chỉnh "trong đó có loại M/DD/YYYY MM/HH bên trong.

Cột SQL là kiểu dữ liệu DATETIME, do đó, tất nhiên nó không chấp nhận số lạ mà nó nhận được.

Bất kỳ ý tưởng nào? thay đổi định dạng của cột "SQL INSERT" không thay đổi kết quả.

+0

Trước tiên, hãy thử đặt cả hai định dạng dữ liệu thành văn bản và xem liệu SQL sẽ thực hiện chuyển đổi datetime ngầm định cho bạn hay không. –

+2

Rất tiếc, việc đặt cột ngày/giờ thực tế thành văn bản sẽ cung cấp số xấu xí được đề cập ở trên. Nhưng tôi đã thử rằng anyways không có may mắn:/ –

+0

Bạn cần một cái gì đó như prepending '''. – pnuts

Trả lời

7

bạn có quyền - định dạng Excel chỉ thay đổi cách các con số là hiển thị, không phải là giá trị cơ bản của ô. Trong trường hợp này, giá trị của ô là giá trị ngày giờ trội, là số ngày kể từ 1/1/1900, với số thập phân cho thời gian.

tôi khuyên bạn nên sử dụng TEXT chức năng của Excel để chuyển đổi giá trị ngày tháng thời gian số của Excel thành một chuỗi văn bản có thể được chèn vào SQL:

Thay vì:

INSERT INTO TABLE VALUES ('"&A1&"', Etc....)" 

Hãy thử:

INSERT INTO TABLE VALUES ('"&TEXT(A1,"YYYY-MM-DD HH:MM")&"', Etc...)" 
+0

cho bạn biết rằng mã trong đối số thứ hai của hàm văn bản (bên trong mã đôi) được gắn với miền địa phương của máy tính. nếu ngữ cảnh trên không hoạt động, hãy kiểm tra định dạng số của ô tương ứng cho biến thể của bạn – robotik

4

Định dạng tốt nhất để chèn một thời gian ngày vào một cột datetime là để trình bày ngày và thời gian như YYYY-MM-DD Minute: Thứ hai hoặc 2015-04-15 12:52

như vậy để chèn một datetime từ Excel bạn có thể sử dụng này tập hợp các chức năng Excel: (nơi A1 chứa datetime được cứu rỗi)

=YEAR(A1)&"-"&RIGHT("00"&MONTH(A1),2)&"-"&RIGHT("00"&DAY(A1),2)&" "&RIGHT("00"&HOUR(A1),2)&":"&RIGHT("00"&MINUTE(A1),2)&":"&RIGHT("00"&SECOND(A1),2) 
+0

bạn đã bỏ lỡ giờ, cộng với các giá trị chữ số đơn phải chứa số 0 đứng đầu. Tôi đang sửa đổi câu trả lời của bạn cho phù hợp – robotik

+0

tạo bảng # x1 (d1 datetime) chèn vào # x1 giá trị ('2015-04-15 12:52') chọn * từ # x1 trả về điều này: 2015-04-15 12: 52: 00.000 –

+0

đó là giờ và phút với số giây bị bỏ qua, không phải phút và giây với giờ bỏ qua – robotik