如何每天在SQL Server中获取新插入的记录

时间:2018-08-08 14:06:37

标签: sql-server

我正在使用SQL Server数据库,我需要分别获取每天,每周,每月和每年的新插入记录总数。我的SQL Server数据库中有一列记录日期和时间(数据类型为datetime)。

我使用以下代码获取每日记录,但不起作用

SQL:

select count(*) 
from dbo.Firsttimer 
where (Signed_in) = date(date_sub(now());

请问我该如何实现?

2 个答案:

答案 0 :(得分:0)

在SQL Server中,您可以使用内置的DateTime方法获得当前的GetDate()值。

因此,要在特定的DateTime列中获取具有今天日期的所有记录,可以执行以下操作:

DECLARE @FromDate date = CAST(GETDATE() AS date)
DECLARE @ToDate date = DATEADD(DAY, 1, @FromDate)

SELECT COUNT(*) 
FROM dbo.Firsttimer 
WHERE [Signed_in] >= @FromDate
AND [Signed_in] < @ToDate

要获取一周中的第一天和最后一天,您可以阅读this SO post
this SO post上每月的第一天和最后一天,
以及每年this SO post

的第一天和最后一天

答案 1 :(得分:0)

您需要使用条件聚合,即count(case...),以及getdate()dateadd()函数。

select
    Today = cast(getdate() as date)
    ,TodayCount = count(case when cast(Signed_in as date) = cast(getdate() as date) then Signed_in)
    ,RollingWeekCount = count(case when cast(Signed_in as date) >= dateadd(day,-7,cast(getdate() as date)) then Signed_in)
    ,Rolling30Days = count(case when cast(Signed_in as date) >= dateadd(day,-30,cast(getdate() as date)) then Signed_in)
    ,Rolling365Days = count(case when cast(Signed_in as date) >= dateadd(day,-365,cast(getdate() as date)) then Signed_in)
from
    YourTable

如果您希望每周,每月,每年分拆这笔款项,那么最好以另一种方式进行处理。但是,您没有指定此位置,因此我提供了一种滚动方法。