Sql server 使用CAST从getdate中删除时间,以获取从昨天开始的最后7天的结果
我用的是这句话Sql server 使用CAST从getdate中删除时间,以获取从昨天开始的最后7天的结果,sql-server,Sql Server,我用的是这句话 SELECT TOP (100) PERCENT CONVERT(varchar(255), [Reg Date1], 103) AS [Reg Date], Regs FROM (SELECT CONVERT(datetime, CONVERT(varchar(255), SetupDateTime, 101)) AS [Reg Date1], COUNT(DISTINCT ID) AS Regs F
SELECT TOP (100) PERCENT CONVERT(varchar(255), [Reg Date1], 103) AS [Reg Date], Regs
FROM (SELECT CONVERT(datetime, CONVERT(varchar(255), SetupDateTime, 101)) AS [Reg Date1], COUNT(DISTINCT ID) AS Regs
FROM dbo.tbl_User
WHERE SetupDateTime
BETWEEN (DATEADD (dd , -7 , GETDATE())) AND (DATEADD (dd , -1 , GETDATE()))
GROUP BY CONVERT(datetime, CONVERT(varchar(255), SetupDateTime, 101))) AS tb
ORDER BY CONVERT(datetime, [Reg Date1])
这是完美的;从昨天算起的最后7天
然而,它得到的结果,从昨天这个时候,但我希望它得到所有的结果,从昨天,所以我知道我要使用一个演员
强制转换(FLOOR(强制转换(GETDATE()为FLOAT))为DATETIME)
但我似乎无法让它与这个查询一起工作
有什么帮助吗?要从datetime开始计算trunc time,请使用cast(getdate()作为日期):
哇!您使用的是什么版本的microsoft sql server? 试试这个 结果对我来说:
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
应返回8位YYYYMMDD
20111216
如果您得到了这个结果,那么您就得到了不起作用的解决方案,我将from更改为表名,但它抛出了一个loadsa错误设置此错误消息243,级别16,状态1,行1类型日期不是定义的系统类型。
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
select convert(char(8), getdate(),112)
20111216