2010-05-29 19 views
10

Tôi đang sử dụng ibatis và C#. tôi nhận được kết quả từ truy vấn chọn đã tạo CreatedDate làm một trong các trường. Datatype của CreatedDate trong Mysql là Date. Tôi chỉ định tập hợp kết quả của truy vấn chọn cho một Ilist < DeliveryClass>.Không thể chuyển đổi giá trị ngày/giờ MySQL thành System.DateTime

Đây là DeliveryClass CreatedDate là DateTime. Khi tôi chạy ứng dụng, tôi nhận được Không thể chuyển đổi giá trị ngày/giờ MySQL thành System.DateTime. Điều gì có thể là vấn đề?

Trả lời

6

Các vấn đề trong định dạng, thực sự mysql có một định dạng khác nhau (yyyy-mm-dd) cho ngày/kiểu dữ liệu thời gian và để giải quyết vấn đề này sử dụng thư viện kết nối mysql cho .net từ đây http://dev.mysql.com/downloads/connector/net/ nó sẽ cho kiểu dữ liệu khác cho ngày/thời gian gọi MysqlDateTime

hoặc bạn có thể định dạng dữ liệu ngày/giờ trong câu lệnh SQL của bạn sử dụng DATE_FORMAT (ngày, định dạng) bạn có thể biết thêm chi tiết từ đây http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

nhưng tôi không đề nghị điều này bởi vì bạn sẽ mất sức mạnh của ngày/giờ e kiểu dữ liệu (ví dụ bạn không thể so sánh) vì bây giờ bạn sẽ chuyển đổi thành chuỗi nhưng tôi nghĩ nó sẽ hữu ích trong các báo cáo

+0

On cập nhật các kết nối đến mới nhất đã không giải quyết vấn đề của tôi –

+0

kết nối nó tự sẽ không giải quyết được vấn đề của bạn nó phụ thuộc vào cách bạn đang lấy dữ liệu của bạn ?? ví dụ tôi đã sử dụng mẫu doodads thế hệ của tôi i ghi đè thuộc tính truy xuất cho datetime (đọc giá trị từ datatable => chuyển đổi nó từ mysqldatetime sang .net datetime) cách u lấy dữ liệu của bạn? –

2

Nó có thể nằm ngoài phạm vi của đối tượng DateTime. Tôi đã nhìn thấy một vài lần. Hãy thử thay đổi sql để trả về ngày hiện tại thay vì cột của bạn và xem nó có đến không.

3

tôi giải quyết vấn đề của tôi bằng cách thiết lập giá trị mặc định của cột dữ liệu như là null thay vì sử dụng 0000-00-00 00:00:00: ngày

cập nhật bảng set = null

52
MySqlConnection connect = new MySqlConnection("server=localhost; database=luttop; user=root; password=1234; pooling = false; convert zero datetime=True"); 

Thêm convert zero datetime=True vào chuỗi kết nối sẽ tự động chuyển đổi 0000-00-00 Giá trị ngày thành DateTime.MinValue().

SOLVED

7

Thêm "convert zero datetime = True" vào chuỗi kết nối đã giải quyết được sự cố của tôi.

<connectionStrings> <add name="MyContext" connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convert zero datetime=True" providerName="MySql.Data.MySqlClient" /> </connectionStrings> 

Trân PS

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