bạn nên xem các định dạng ngày giờ có sẵn trong SQL Server: http:// msdn.microsoft.com/en-us/library/ms187928.aspx
yyyy-mm-dd hh:mi
là những gì bạn nên sử dụng:
thử:
SELECT
*
FROM Records
WHERE DateCreated>='2007-02-30 10:32' AND DateCreated<='2008-06-21 14:19'
trong truy vấn trên, các chuỗi sẽ được chuyển đổi thành kiểu dữ liệu datetime nếu DateCreated
là một cột ngày giờ. và truy vấn sẽ hoạt động.
bạn có thể tạo các biến cục bộ của kiểu dữ liệu datetime và sử dụng truy vấn như:
DECLARE @StartDate datetime, @EndDate datetime
SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'
SELECT
*
FROM Records
WHERE DateCreated>[email protected] AND DateCreated<[email protected]
Tôi thích sử dụng <, <=,> =, hoặc> vì nó cho phép linh hoạt hơn BETWEEN
và buộc bạn phải suy nghĩ về việc bao gồm các điểm cuối hay không.
Một điều khác cần xem xét là lấy tất cả dữ liệu từ một ngày hoàn chỉnh:
DECLARE @StartDate datetime, @EndDate datetime
--set the days you want
SELECT @StartDate='2007-02-30 10:32', @EndDate='2008-06-21 14:19'
--remove the time
SELECT @StartDate=DATEADD(day,DATEDIFF(day,0,@StartDate),0), @EndDate=DATEADD(day,DATEDIFF(day,0,@EndDate),0)
--get everything on '2007-02-30' up to the end of the day on '2008-06-21'
SELECT
*
FROM Records
WHERE DateCreated>[email protected] AND DateCreated<@EndDate+1