Int*_*eer 2 sql t-sql sql-server sql-server-2005 sql-server-2008
我想获得当前日期 - 6天.这很容易.
现在我想获得当前日期 - 6天+ 12:01 AM.
所以如果今天是3-2-2012 11:14 AM.
我希望2-25-2012 12:01 AM
这2个选项将给我当前日期 - 6,但不会将时间重置为12:01 AM
SELECT DATEADD(minute, 1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - 6, 0))
Run Code Online (Sandbox Code Playgroud)
相当于
SELECT DATEADD(minute, 1, DATEADD(DAY, DATEDIFF(DAY, '19000101', GETDATE()) - 6, '19000101'))
Run Code Online (Sandbox Code Playgroud)
我想你会发现这个选项比varchar实现更快,更灵活.通过保持数据类型不变,您不必担心转换/转换结果的变幻莫测.
请参阅Louis Davidson的完整解释之一:http: //sqlblog.com/blogs/louis_davidson/archive/2011/02/09/some-date-math-fun.aspx
使用以下内容将以datetime
格式显示结果:
SELECT CAST(Convert(varchar(10), DateAdd(d, -6, getdate()), 101)
+ ' 12:01 AM' as datetime)
Run Code Online (Sandbox Code Playgroud)
结果: 2012-02-25 00:01:00.000
获得所需的日期时间后,可以将其转换为多种不同的格式.
或者您可以执行以下varchar
格式:
select Convert(varchar(10), DateAdd(d, -6, getdate()), 110) + ' 12:01 AM'
Run Code Online (Sandbox Code Playgroud)
结果 02-25-2012 12:01 AM