【问题标题】:How to select the SQL data from just 20 days using the TimeStamp如何使用时间戳从短短 20 天内选择 SQL 数据
【发布时间】:2019-01-26 08:54:28
【问题描述】:

我怎样才能使用时间戳来使用前 20 天的数据。在下面的代码中,我选择了时间戳上面的任何内容,我想选择并稍后插入它。但我对数据库中的所有数据不感兴趣,但我需要从该特定时间戳日期起 20 天的数据。我怎样才能实现它。我尝试的是在下面。

我的SQL server查询如下:

SELECT [LogID]
      ,[TimeStamp]
      ,[Artikel_Nr]
      ,[Percentage_Nr]
from [Database1].[dbo].[Tabel1]
  where [TimeStamp] > 2018-02-12 06:02:18.77 AND SELECT DATEADD(DAY,-20,GETDATE())

我不确定上面选择过去 20 天的行是否正确。如果不是请纠正我。

【问题讨论】:

  • [server1].[dbo].[Database1] 没有意义。第一个对象是数据库,第二个是模式,第三个是数据库和模式中的对象(即表、视图)。如果您使用 4 部分命名,那么第一部分将是服务器名称。
  • @Larnu:对不起,我的错,它是 [Database1].[dbo].[Tabel1]。我将编辑我的内容。感谢您的关注。

标签: sql sql-server datetime timestamp sql-timestamp


【解决方案1】:

试试

DECLARE @EndDate DateTime = GETDATE(); -- Specify the date you want to end at
DECLARE @StartDate DateTime = DATEADD(DAY, -20, @EndDate);

SELECT [LogID]
  ,[TimeStamp]
  ,[Artikel_Nr]
  ,[Percentage_Nr]
FROM [Table]
WHERE [TimeStamp] > @StartDate AND [TimeStamp] <= @EndDate 

【讨论】:

  • 不应该是DECLARE @StartDate DateTime = DATEADD(DAY, -20, @ EndDate)吗?
【解决方案2】:

SELECT DATEADD(DAY,-20,GETDATE()) 会报错,你可以直接使用DATEADD(DAY,-20,GETDATE())

如果您想提前 20 天,可以在开始日期和结束日期之间尝试。

  1. 前 20 天的开始日期DATEADD(DAY,-20,GETDATE())
  2. 结束日期仅使用GETDATE() 获取当前日期时间。

然后使用Between

SELECT [LogID]
      ,[TimeStamp]
      ,[Artikel_Nr]
      ,[Percentage_Nr]
from [server1].[dbo].[Database1]
where [TimeStamp]  between DATEADD(DAY,-20,GETDATE()) and GETDATE()

【讨论】:

    【解决方案3】:

    试试下面的查询:你不需要选择

    SELECT [LogID]
          ,[TimeStamp]
          ,[Artikel_Nr]
          ,[Percentage_Nr]
    from [server1].[dbo].[Database1]
      where [TimeStamp] > '2018-02-12 06:02:18.77' AND [TimeStamp]< DATEADD(DAY,-20,GETDATE())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      相关资源
      最近更新 更多