Tôi có đối tượng dateTime trong C# và tôi muốn thực hiện chèn vào trường datetime SQL Server. Định dạng chính xác cho điều này là gì?cách chính xác để định dạng ngày giờ trong trường datetime của máy chủ SQL là gì
Trả lời
Cách chính xác để thực hiện việc này là sử dụng truy vấn được tham số hóa, không phải định dạng văn bản. Sau đó, bạn chỉ có thể sử dụng thông số SqlDbType.DateTime
được nhập mạnh mẽ.
(Nếu bắt buộc phải sử dụng định dạng văn bản để làm điều này - và tôi khuyên chống lại nó -. Sau đó giống như yyyyMMdd HH:mm:ss
nên làm các trick)
tôi sẽ không chuyển một chuỗi vào truy vấn được tham số hóa và có cùng vấn đề không? – leora
Trên thực tế, định dạng được đảm bảo hoạt động trên bất kỳ Máy chủ SQL nào bất kể cài đặt ngôn ngữ và khu vực sẽ là 'yyyyMMdd HH: mm: ss' (không có dấu gạch ngang - những lỗi gây ra sự cố trong cài đặt ngôn ngữ nhất định) –
@marc_s: Tôi đã đã cập nhật câu trả lời để sử dụng định dạng an toàn trong mọi trường hợp. – LukeH
sử dụng SET DATEFORMAT
một mẫu took from here
SET NOCOUNT ON
CREATE TABLE X(EXAMPLE INT, D SMALLDATETIME)
-- EXAMPLE 1
SET DATEFORMAT MDY
INSERT INTO X VALUES (1, '10/30/56')
-- EXAMPLE 2
SET DATEFORMAT YDM
INSERT INTO X VALUES (2, '56/31/10')
-- EXAMPLE 3
SET DATEFORMAT YMD
INSERT INTO X VALUES (3, '56/10/31')
SELECT * FROM X
Để mở rộng câu trả lời của @ Luke, tôi đã gặp lỗi này chỉ trong một ngày khác.
Định dạng yyyy-MM-dd HH:mm:ss
có một ngôn ngữ/vấn đề ngôn ngữ trên SQL Server 2005 (một ví dụ là tiếng Pháp), nhưng là cố định trong SQL 2008:
Vì vậy, KHÔNG sử dụng định dạng này: yyyy-MM-dd HH:mm:ss
(không gian tách).
Chỉ sử dụng: yyyy-MM-ddTHH:mm:ss
("T" separator) hoặc yyyyMMdd HH:mm:ss
(không delimiters dash)
quan trọng nếu bạn đang tạo ra kịch bản bao gồm datetime
hằng số.
- 1. Máy chủ SQL: Thêm giây vào trường ngày giờ?
- 2. Định dạng datetime là gì?
- 3. Máy chủ SQL: Tầng một ngày trong máy chủ SQL, nhưng vẫn xác định
- 4. Biểu diễn bên trong của datetime trong máy chủ sql là gì?
- 5. định dạng ngày giờ sang định dạng SQL bằng C#
- 6. Cách tối ưu để so sánh ngày tháng trong máy chủ Microsoft SQL là gì?
- 7. Định dạng múi giờ datetime
- 8. Xóa thời gian khỏi máy chủ sql của DateTime 2005
- 9. Html.HiddenFor định dạng DateTime không chính xác trong ASP.NET
- 10. Định dạng ngày giờ Sự cố: Chuỗi không được nhận dạng là DateTime hợp lệ
- 11. Chuyển đổi ngày giờ của SQL Server thành định dạng ngày ngắn hơn
- 12. Định dạng chuỗi ngày giờ mặc định với múi giờ
- 13. T-SQL: Làm cách nào để cập nhật phần ngày của trường ngày giờ?
- 14. Máy chủ lưu trữ chính xác là gì?
- 15. Định dạng ngày giờ Ngày trong năm
- 16. Các vấn đề về Ngày giờ của Máy chủ SQL. Mỹ vs Anh?
- 17. Máy chủ SQL tạo ngày
- 18. Cách đặt định dạng ngày và giờ trong IIS 7
- 19. MS SQL datetime vấn đề chính xác
- 20. Định dạng ngày giờ trong asp.net mvc 4
- 21. Khoá chính của máy chủ SQL View
- 22. Máy chủ SQL: Chuyển đổi giữa UTC và Giờ địa phương chính xác
- 23. Độ chính xác ngày giờ?
- 24. Trường Ngày giờ và trình trợ giúp Html.TextBoxFor(). Làm thế nào để sử dụng nó một cách chính xác?
- 25. MySQL: Chèn ngày giờ vào trường ngày giờ khác
- 26. biểu thức chính quy để xác thực định dạng ngày giờ (MM/DD/YYYY)
- 27. Phân tích định dạng ngày giờ tùy chỉnh
- 28. Informix SQL: Cách lấy phần ngày của trường datetime trong truy vấn?
- 29. Cách chính xác để khởi động máy chủ của bạn từ lời thề để thử nghiệm là gì?
- 30. Ngày giờ chuyển đổi XSLT sang định dạng ngày
Có thể bạn không nên xây dựng chuỗi SQL bằng mã. Thay vào đó, bạn nên xem xét sử dụng procs được lưu trữ, truy vấn được tham số hóa hoặc ORM. Bất kỳ điều nào trong số này sẽ giải quyết vấn đề của bạn với định dạng khi bạn chỉ truyền đối tượng, bạn không phải thực hiện bất kỳ định dạng chuỗi nào. –