vấn đề di này chỉ áp dụng với literals.
Tôi không tin rằng có một cách hoàn toàn di động để thực hiện điều này vì SQL Server không hỗ trợ từ khóa ANSI theo ngữ cảnh DATE và tất cả các hàm CAST, CONVERT, TO_DATE và ngày không giống nhau trên tất cả các nền tảng.
Lưu ý rằng truy vấn thứ hai của bạn cũng có thể được viết là Select * from MyTable where myDate > '20130410'
.
Sẽ rất tuyệt nếu có hỗ trợ trong SQL Server cho tính năng chữ ANSI DATE (DB/2 và Teradata đều có tính năng này).
Tôi không thể tìm thấy mục Kết nối về điều này, cũng như bất cứ điều gì về lý do tại sao SQL Server không hỗ trợ các từ khóa ANSI DATE, TIME và TIMESTAMP.
Tôi tự hỏi trong trường hợp của bạn, liệu có thể sử dụng tham số thay thế không?
Giải pháp trong nhận xét của Jack Common SQL to compare dates in SQL Server and ORACLE sẽ làm cho mã này di động, nhưng bạn sẽ phải có chức năng vô hướng vô hướng. Đây có thể là một lựa chọn khả thi cho bạn - lưu ý rằng trong SQL Server, bạn sẽ cần tiền tố hàm vô hướng với lược đồ của nó - điều này có thể giới thiệu một nếp nhăn khác giữa mã Oracle và mã SQL nếu bạn không thể tạo các lược đồ cùng tên (lưu ý trong Oracle, tiền tố có thể là tên của gói thay vì lược đồ nếu bạn đặt hàm bên trong gói)
Nguồn
2013-04-16 14:52:24
@Aaron Bertrand Không có tác phẩm nào ở trên không hoạt động trong oracle. Lỗi của nó nói rằng đó là tháng không hợp lệ. – CathalMF
@CathalMF mà [phụ thuộc vào cài đặt NLS của bạn] (http://www.sqlfiddle.com/#!4/d41d8/9820) như đã đề cập bởi Ed. –
@JackDouglas - bạn chính xác; Tôi phóng đại điểm đó. Tôi nên nói "lộn xộn" hoặc "mạo hiểm" và để nó ở đó. Tôi sẽ chỉnh sửa bình luận. –