2013-07-30 39 views
10

Trong SQL Server Management Studio, tôi đang cố gắng tham chiếu một ngày và giờ cụ thể, sử dụng biến cho ngày, như được hiển thị bên dưới.Đặt ngày biến trong SQL

Declare @specified_date Date 
set @specified_date = '07-01-2013' 

Select * 
from etc 
Where CreatedDate > CONVERT(datetime, @specified_date & '00:00:00.000') 

Mã này không hoạt động, và tôi nhận được lỗi này:

The data types date and varchar are incompatible in the '&' operator.

Dữ liệu đang được sử dụng có cả một ngày và thời gian mã trên nó, và thay vì thay đổi nhiều thắc mắc, tôi d muốn có thể chỉ xác định ngày một lần và có biến mang nó qua. Nếu bất cứ ai biết về một giải pháp, đó sẽ là tuyệt vời.

+0

Tôi khuyên bạn nên ** luôn ** sử dụng ngày được định dạng ISO-8601, nếu bạn chỉ định ngày làm chuỗi - đó sẽ là định dạng 'YYYY-MM-DD'. Chỉ định dạng đó được đảm bảo hoạt động trên tất cả các phiên bản SQL Server với bất kỳ cài đặt ngôn ngữ và/hoặc định dạng ngày tháng nào. Bất cứ điều gì khác * có thể * làm việc với các thiết lập đúng, nhưng có thể thất bại khủng khiếp khi được sử dụng trên một hệ thống khác với các cài đặt khác nhau –

Trả lời

16

Bạn có thử điều này:

Declare @specified_date Date 
set @specified_date = '07-01-2013' 
Select * from etc 
Where CreatedDate > @specified_date 
+0

Không, nhưng bạn đã cho tôi ý tưởng đã hoạt động! Cảm ơn một tấn, đây là những gì tôi đã kết thúc với – Dakota

+0

SO là cho tôi một thời gian khó thêm mã, nó về cơ bản tuyên bố một ngày là A, tiếp theo là B, và sau đó chọn * giữa A và B – Dakota

3

Sử dụng + thay vì &. Bạn cũng sẽ phải bỏ chuỗi để làm cho nó một datetime.

Declare @specified_date Date 
set @specified_date = '07-01-2013' 
Select * from etc 
Where CreatedDate > CONVERT(datetime, @specified_date + cast('00:00:00.000' as datetime)) 
+1

Cảm ơn! tiết kiệm này ... Tôi rất quen với việc viết mã trong VBA, thật khó để không ghép nối mọi thứ bằng cách sử dụng một & lol – Dakota