2014-12-04 11 views
6

Tôi có cơ sở dữ liệu phía sau MS Access 2010/SQL Server 2012, với một số trường ngày trong các bảng khác nhau. Đôi khi tôi cần phải lưu trữ thời gian, vì vậy tôi đã sử dụng các loại dữ liệu datetime hoặc smalldatetime. Tuy nhiên các trường nhất định chỉ cần lưu trữ ngày, vì vậy tôi đã sử dụng kiểu dữ liệu Ngày.Loại ngày SQL Server xuất hiện dưới dạng trường văn bản trong MS Access

Vấn đề của tôi là trong MS Access, bảng được liên kết ODBC của tôi hiển thị trường kiểu dữ liệu ngày dưới dạng Văn bản. Điều này sau đó dẫn đến sự cố với một số ngày được lưu trữ ở định dạng yyyy-dd-mm và các ngày khác theo định dạng yyyy-mm-dd.

Đây có phải là lỗi không? Tôi có cần sử dụng smalldatetime không?

Thanks cho bất kỳ sự trợ giúp, Jim

+0

Chỉ cần để làm rõ vấn đề định dạng hiển thị này vì máy chủ SQL lưu trữ ngày tháng dưới dạng [số nguyên 3 byte] (http://msdn.microsoft.com/en-us/library/bb630352%28v=sql.110%29.aspx). Định dạng của ngày không được lưu trữ. –

+0

Xin chào Conrad, đây là vấn đề về định dạng, nhưng nó vượt xa điều đó. Ví dụ, tôi có một truy vấn truy cập sẽ loại trừ bất kỳ bản ghi nào trong đó [datefield]> Date(), nhưng vì [datefield] đang được nạp dưới dạng chuỗi văn bản, bản ghi được đưa vào bất kỳ thứ gì. Ngoài ra, nếu tôi nhìn vào thiết kế bảng của bảng được nối kết trong Access, nó hiển thị trường dưới dạng trường văn bản, không phải là trường ngày. – BiigJiim

+0

Bạn có thể thử 'CDate ([datefield])> Date()' hoặc thử sử dụng 'DateTime' thay vì' Date' và sử dụng một mặt nạ đầu vào. –

Trả lời

4

Đã cùng một vấn đề bản thân mình nối Access 2007 và SQL Server 2008.

Xem this question, nếu bạn nhìn vào bình luận Albert D. Kallal để câu trả lời đầu tiên, nó cho chúng tôi biết rằng sự cố xảy ra với trình điều khiển đã lỗi thời kết nối giao diện người dùng với phần cuối.

Nếu bạn không thể chọn trình điều khiển cập nhật (và lưu ý rằng ngay cả khi bạn có thể, những người dùng khác của cơ sở dữ liệu của bạn trên các máy khách khác nhau có thể không có) giải pháp thay thế là sử dụng kiểu dữ liệu datetime trong mọi trường hợp.

+0

Cảm ơn - đây là những gì tôi nghi ngờ, rằng đó là một vấn đề trình điều khiển. Thay vì lộn xộn xung quanh với các trình điều khiển mới (mà khách hàng có thể không có trên các máy sản xuất), tôi đã thay đổi mọi thứ thành datetime. Có vẻ như một chút giải pháp rác thải cho một vấn đề không nên tồn tại. P.S. Tôi đã cố gắng để đánh giá câu trả lời của bạn, nhưng dường như tôi không có đủ thông tin phản hồi! – BiigJiim

+0

@BiigJiim: bạn không cần phải đưa ra câu trả lời, chỉ cần đánh dấu là "câu trả lời". –

0

Chỉ cần nói thêm về những nhận xét được đưa ra bởi @BiigJiim tôi thực sự đã có Native lái xe khách hàng 11.0 đã được cài đặt nhưng như tôi đã tạo ra các kết nối bảng DSN-ít tôi đã phải thay đổi chuỗi kết nối của tôi chính thức để: Driver={SQL Server Native Client 11.0};

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