如何在SQL server中选择要显示的日期?
有没有一种方法可以让我在sql dates from to中使用select语句显示日期? 例如,如果我选择2013年1月15日作为起始日期,选择2013年1月20日作为起始日期,则查询将显示以下内容:如何在SQL server中选择要显示的日期?,sql,sql-server,Sql,Sql Server,有没有一种方法可以让我在sql dates from to中使用select语句显示日期? 例如,如果我选择2013年1月15日作为起始日期,选择2013年1月20日作为起始日期,则查询将显示以下内容: 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 这可能吗?
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
这可能吗?在…和之间使用
:
SELECT DateCol
FROM TableName
WHERE DateCol BETWEEN @FromDate AND @ToDate
ORDER BY DateCol
在…和之间使用:
SELECT DateCol
FROM TableName
WHERE DateCol BETWEEN @FromDate AND @ToDate
ORDER BY DateCol
一个更好的方法是写以下内容:
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);
检查这里。更好的方法是写以下内容:
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);
检查这里。下一个解决方案。我觉得更直观
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
declare@table表(d datetime)
声明@start datetime='2014-01-01'
声明@stop datetime='2014-01-21'
而@start是下一个解决方案。我觉得更直观
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
declare@table表(d datetime)
声明@start datetime='2014-01-01'
声明@stop datetime='2014-01-21'
当@start时,如果我没有一列上有日期怎么办?我还可以得到日期吗?这取决于字段中的数据类型。例如,如果你有varchar,你可以使用convert-to-datetime,而不是@raing所说的使用between。您可以使用cast函数,但日期的格式应正确。尝试从表1中选择cast(数据列为datetime),如果没有包含日期的列怎么办?我还可以得到日期吗?这取决于字段中的数据类型。例如,如果你有varchar,你可以使用convert-to-datetime,而不是@raing所说的使用between。您可以使用cast函数,但日期的格式应正确。尝试从表1中选择cast(data列为datetime),我不确定他是否有权访问sys
,但这是一个很好的解决方案+1我不确定他是否有权访问sys
,但这是一个很好的解决方案+1可能的dup可能的dup