如何在SQL Server中选择要显示的日期?

时间:2014-06-09 06:56:37

标签: sql sql-server

我有办法在sql日期中使用select语句来显示日期吗? 就像我从2013年1月15日和2013年1月20日选择2013年1月15日的日期一样,该查询将显示以下内容:

    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

这可能吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用BETWEEN...AND

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

答案 2 :(得分: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