如何使用sqlserver中的WITH子句获取当前月份和当前日期的数据 [英] how to get current month and current day of data using WITH clause in sqlserver

查看:144
本文介绍了如何使用sqlserver中的WITH子句获取当前月份和当前日期的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有一个查询,从当前日期返回最近7天的数据,但是当用户从前端应用程序输入日期时,我想获取当前月份的数据和当前日期的数据.在这里,我给出的查询将返回过去7天的数据.

Hi,

i have a query that returns last 7 days of data from the current date but i want to get current month data and current day of data when user enter date from front end application. here i am giving query that returns last 7 days of data .

ALTER PROCEDURE [dbo].[New_QueryTotalShipOrders_WEEKITEM]  
@DateFrom  NVARCHAR(50)
AS
DECLARE @CurrentDate NVARCHAR(10)

BEGIN
SET @CurrentDate= @DateFrom--'2012-07-27'
SET @CurrentDate=(SELECT REPLACE(@CurrentDate,'-','/'));

WITH DateList AS
(
SELECT  DATEADD(dd, 0, CONVERT(DATETIME, @CurrentDate)) AS CreateDateTime, 1 AS Cnter
UNION ALL
SELECT  DATEADD(dd, -1, CreateDateTime), DateList.Cnter + 1
FROM DateList
WHERE DateList.Cnter  < 7
)
SELECT  DateList.CreateDateTime AS ShipDay, COALESCE(Temp.TotalCount, 0) AS TotalCount, 'Consolidate' as ConsolidateCount
FROM DateList
LEFT JOIN  (
SELECT  COUNT(Id) TotalCount
,CONVERT(VARCHAR(10), CreatedDateTime, 112) AS CreateDateTime
FROM    ShipmentDetail sd
Inner JOin(select Distinct shipmentId,Sku From items) as i on i.ShipmentID=sd.Id
WHERE   CreatedDateTime >= DATEADD(dd, -6, @CurrentDate)
AND CreatedDateTime < DATEADD(dd, 1, @CurrentDate) 
and sd.Id IN (SELECT i1.ShipmentID

 FROM Items i1 (NOLOCK)
 WHERE i1.SubOrderId = sd.SubOrderId  and i.Sku in('2x3SGC','3X5SNC','4x5SGC','ADDRLBL','STICKER01'))

GROUP BY CONVERT(VARCHAR(10), CreatedDateTime, 112)
) Temp
ON CONVERT(VARCHAR(10), DateList.CreateDateTime, 112) = Temp.CreateDateTime

union all

SELECT  DateList.CreateDateTime AS ShipDay, COALESCE(Temp.TotalCount, 0) AS TotalCount,'NonConsolidate' as NonConsolidateCount
FROM DateList
LEFT JOIN  (
SELECT  COUNT(Id) TotalCount
,CONVERT(VARCHAR(10), CreatedDateTime, 112) AS CreateDateTime
FROM    ShipmentDetail sd
Inner JOin(select Distinct shipmentId,Sku From items) as i on i.ShipmentID=sd.Id
WHERE   CreatedDateTime >= DATEADD(dd, -6, @CurrentDate)
AND CreatedDateTime < DATEADD(dd, 1, @CurrentDate)
and sd.Id IN (SELECT i1.ShipmentID

 FROM Items i1 (NOLOCK)
 WHERE i1.SubOrderId = sd.SubOrderId  and i.Sku in('NOTEBOOK01','NOTEBOOK02','NOTEPAD01','5X7SNP','CALENDAR01','CALENDAR02'))

GROUP BY CONVERT(VARCHAR(10), CreatedDateTime, 112)
) Temp
ON CONVERT(VARCHAR(10), DateList.CreateDateTime, 112) = Temp.CreateDateTime

END

推荐答案

尝试:

Try:

SELECT left(convert(varchar, getdate(), 110),2) as Month ,left(convert(varchar, getdate(), 103),2) as Day


这篇关于如何使用sqlserver中的WITH子句获取当前月份和当前日期的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆