2014-06-09 73 views
0

有沒有一種方法可以讓我在SQL日期中使用select語句顯示日期? 一樣,如果我選擇日期2013年1月15日從和2013年1月20日作爲對查詢將顯示如下:如何在SQL Server中選擇日期以顯示?

DATE 
2013/01/15 12:00 
2013/01/16 12:00 
2013/01/16 12:00 
2013/01/17 12:00 
2013/01/18 12:00 
2013/01/19 12:00 
2013/01/20 12:00 

這是可能的嗎?

+0

http://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates – zhongxiao37

回答

2

一個更好的辦法是寫的東西爲:

DECLARE @from DATE, @to DATE; 
SELECT @from = '2013-01-15' , @to = '2013-01-20'; 

    SELECT DATEADD(DAY, n-1, @from) 
    FROM 
    (
    SELECT TOP (DATEDIFF(DAY, @from, @to)+1) ROW_NUMBER() 
     OVER (ORDER BY s1.[object_id]) 
     FROM sys.all_objects AS s1 
     CROSS JOIN sys.all_objects AS s2 
) AS x(n); 

檢查Demo這裏。

+0

我不確定他是否有權訪問'sys',但它是很好的解決方案。 +1 – zhongxiao37

1

使用BETWEEN...AND

SELECT DateCol 
FROM TableName 
WHERE DateCol BETWEEN @FromDate AND @ToDate 
ORDER BY DateCol 
+0

的可能DUP,如果我沒有的東西列有日期嗎?我仍然可以得到日期嗎? –

+1

這取決於什麼數據類型在字段中。防爆。如果你有varchar你可以使用轉換爲日期時間,並在as @raging之間使用說。 http://technet.microsoft.com/pl-pl/library/ms187928%28v=sql.110%29.aspx – robertw

+0

您可以使用強制轉換功能,但日期應採用正確的格式。嘗試從table_1中選擇cast(data_col作爲日期時間) –

1

下一個解決方案。我覺得更直觀

declare @table table (d datetime) 

declare @start datetime = '2014-01-01' 
declare @stop datetime = '2014-01-21' 

while @start <= @stop 
begin 
    insert into @table (d) 
    values (@start) 

    set @start = DATEADD(day, 1, @start) 
end 

select * from @table