如何使用时间戳从短短 20 天内选择 SQL 数据
Posted
技术标签:
【中文标题】如何使用时间戳从短短 20 天内选择 SQL 数据【英文标题】:How to select the SQL data from just 20 days using the TimeStamp 【发布时间】: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]。我将编辑我的内容。感谢您的关注。
【参考方案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 天,可以在开始日期和结束日期之间尝试。
-
前 20 天的开始日期
DATEADD(DAY,-20,GETDATE())
结束日期仅使用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())
【讨论】:
以上是关于如何使用时间戳从短短 20 天内选择 SQL 数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 sql 查询将元数据库中的预配置时间戳从 utc 格式转换为 ist
如何在 Oracle SQL 中仅选择最近 30 天内第一次在表中显示的这些 ID?
选择在 30 天内每周至少玩 2 次或更多时间的唯一用户。 (SQL/BigQuery)
如何使用颤振将时间戳从 Firebase 转换为 DateTime