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

标签 sql sql-server sql-server-2008 sql-server-2005 tsql

我正在尝试获取当前日期 - 6 天。这很容易。

现在我正在尝试获取当前日期 - 6 天 + 12:01 AM。

如果今天是 2012 年 2 月 3 日上午 11:14。

我想获取 2-25-2012 12:01 AM

这 2 个选择将为我提供当前日期 - 6,但不会将时间重置为 12:01 AM

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

最佳答案

SELECT DATEADD(minute, 1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - 6, 0))

相当于

SELECT DATEADD(minute, 1, DATEADD(DAY, DATEDIFF(DAY, '19000101', GETDATE()) - 6, '19000101'))

我想您会发现这个选项比 varchar 实现更快、更灵活。通过保持数据类型不变,您不必担心转换/转换结果的变化无常。

请参阅路易斯·戴维森 (Louis Davidson) 以获取完整的解释之一: http://sqlblog.com/blogs/louis_davidson/archive/2011/02/09/some-date-math-fun.aspx

关于sql - TSQl:选择当前日期 - 6 天并将时间设置为 12:01 AM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536623/

相关文章:

php - 使用表 B 中的信息更新表 A(其中包含重复信息)

php - 恢复sql语句的函数

mysql - 检查表的时间重叠?

sql-server - 更改跟踪 : TRACK_COLUMNS_UPDATED not working?

sql - 用同一表中另一列的值更新每一行

sql - SQL Server 中 DATE 类型的问题

SQL ServerWhere子句Case语句?

python - Django 查询性能

sql - 连接海量 CTE 表(13,000,000 行以上)性能问题

c# - Dapper 存储过程的表值参数