sql-server – 在SQL服务器中建立一个日期

在SQL Server中,如何“落实”DATETIME到秒/分/小时/天/年?

假设我的日期为2008-09-17 12:56:53.430,那么地板的输出应该是:

>年份:2008-01-01 00:00:00.000
>月份:2008-09-01 00:00:00.000
>日期:2008-09-17 00:00:00.000
>小时:2008-09-17 12:00:00.000
>分钟:2008-09-17 12:56:00.000
>第二:2008-09-17 12:56:53.000

关键是使用DATEADDDATEDIFF以及适当的SQL时间列举枚举。

declare @datetime datetime;
set @datetime = getdate();
select @datetime;
select dateadd(year,datediff(year,0,@datetime),0);
select dateadd(month,datediff(month,0,@datetime),0);
select dateadd(day,datediff(day,0,@datetime),0);
select dateadd(hour,datediff(hour,0,@datetime),0);
select dateadd(minute,datediff(minute,0,@datetime),0);
select dateadd(second,datediff(second,'2000-01-01',@datetime),'2000-01-01');

注意,当你在第二个楼层时,如果你使用0,你经常会得到一个算术溢出。所以选择一个已知的值,保证低于你试图落地的日期时间。

http://stackoverflow.com/questions/85373/floor-a-date-in-sql-server

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql-server – 在SQL服务器中建立一个日期