TSQl:选择当前日期 - 6天,并将时间设置为12:01 AM

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

  • 选择getdate() - 6
  • SELECT DATEADD(day,-6,CURRENT_TIMESTAMP);

Phi*_*mer 6

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


Tar*_*ryn 5

使用以下内容将以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