View Full Version : سلکت فيلدي از نوع DateTime همراه با تفکيک اون به سال و ماه و Group By بر اساس سال و ماه
bftarane
یک شنبه 19 آذر 1391, 23:46 عصر
سلام.
لطفاً اين sp رو ببينيد
USE [st]
GO
/****** Object: StoredProcedure [dbo].[NewsArchive] Script Date: 12/09/2012 23:24:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[NewsArchive]
as
begin
select YEAR(StartDate) as [Year], MONTH(StartDate) as [MonthNumber], COUNT(*) as [Count]
From tbl_news group by MONTH(StartDate),YEAR(StartDate)
end
چطور ميشه StartDate رو هم سلکت کرد؟
ممنون مي شم پاسخ بديد. خيلي برام مهمه.
ASKaffash
دوشنبه 20 آذر 1391, 06:51 صبح
سلام
وقتی روی MONTH(StartDate),YEAR(StartDate) گروه بندی کرده اید به StartDate دسترسی ندارید
bftarane
دوشنبه 20 آذر 1391, 08:07 صبح
يعني هيچ راهي نداره من هم گروه بندي کنم هم به StartDate دسترسي داشته باشم. اينو براي آرشيو مي خوام استفاده کنم.
اومدم Sp زير رو بسازم از اون هم ايراد ميگيره چون پارامتر اول Substring انگار بايد رشته باشه نه تاريخ
WITH Category AS(
SELECT
StartDate,
SUBSTRING(StartDate, 1, 4) AS Year,
SUBSTRING(StartDate, 6, 2) AS Month,
SUBSTRING(StartDate, 9, 2) AS Day
FROM tbl_news
)
SELECT Year + '/' + Month + '/' + Day AS Date FROM Category
GROUP BY Year, Month
به هر حال من به خود تاريخ و سال و ماه اون به صورت دسته بندي شده احتياج دارم هر راه ديگه اي هم به نظرتون ميرسه ممنون ميشم راهنمايي کنيد.
Reza_Yarahmadi
دوشنبه 20 آذر 1391, 09:33 صبح
فرض کنید شما تاریخ های زیر رو دارید
2012/12/08
2012/12/09
2012/12/10
2012/12/11
2012/12/12
توی هر تاریخ هم یک رکورد ثبت شده که تعداد اونها ((*)Count) میشه 5!
خروجی دستور شما میشه
Year = 2012, MonthNumber = 12, Count = 5, StartDate = ?
که این خروجی یک رکورد بیشتر نیست، حالا شما بگید کدوم یکی از اون تاریخ ها رو میخواید به عنوان StartDate قرار بدید؟؟
اگر تاریخ ابتدایی و یا انتهایی رو بخواید میتونید توابع Min و Max استفاده کنید.
esmit61
دوشنبه 20 آذر 1391, 09:44 صبح
سلام
این درخواست شما غیر منطقی هست. وقتی میخواهید روی سال و ماه گروه بندی کنید دیگه روز معنی نداره
مثلا میگید سال 91 ماه آذر 4 رکورد و ...
شاید هم من منظورتونو بد متوجه شدم. میشه یه مثال بزنید
bftarane
دوشنبه 20 آذر 1391, 10:01 صبح
آره راست مي گيد اصلاً روز نبايد باشه
من مي خوام مثلاً يه همچين خروجي داشته باشم
بهمن 1388
اسفند 1390
فروردين 1391
مسئله اينه که من با دستور زير
USE [st]
GO
/****** Object: StoredProcedure [dbo].[NewsArchive] Script Date: 12/10/2012 10:31:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[NewsArchive]
as
begin
select YEAR(StartDate) as [Year], MONTH(StartDate) as [MonthNumber], COUNT(*) as [Count]
From tbl_news group by MONTH(StartDate),YEAR(StartDate)
end
خروجي به صورت 2 تا int هست يعني سال و ماه و من براي اينکه اونا رو به فارسي نشون بدم بايد از اين خروجي ها دوباره يه فيلد از نوع DateTime درست کنم تا بتونم با persia.dll به فارسي تبديل کنم که اينجا گير کردم.
اون StartDate هم فکر کنم اسمش باعث سردرگمي ميشه شما همون PublishDate در نظر بگيريد.
ASKaffash
سه شنبه 21 آذر 1391, 07:04 صبح
آره راست مي گيد اصلاً روز نبايد باشه
من مي خوام مثلاً يه همچين خروجي داشته باشم
بهمن 1388
اسفند 1390
فروردين 1391
مسئله اينه که من با دستور زير
USE [st]
GO
/****** Object: StoredProcedure [dbo].[NewsArchive] Script Date: 12/10/2012 10:31:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[NewsArchive]
as
begin
select YEAR(StartDate) as [Year], MONTH(StartDate) as [MonthNumber], COUNT(*) as [Count]
From tbl_news group by MONTH(StartDate),YEAR(StartDate)
end
خروجي به صورت 2 تا int هست يعني سال و ماه و من براي اينکه اونا رو به فارسي نشون بدم بايد از اين خروجي ها دوباره يه فيلد از نوع DateTime درست کنم تا بتونم با persia.dll به فارسي تبديل کنم که اينجا گير کردم.
اون StartDate هم فکر کنم اسمش باعث سردرگمي ميشه شما همون PublishDate در نظر بگيريد.
سلام
خوب این یک موضوع دیگر است در چه زبانی می خواهید از این سال و ماه به صورت فارسی استفاده کنید ؟
bftarane
سه شنبه 21 آذر 1391, 07:53 صبح
من با Asp.net و #C کار مي کنم. ممنون ديگه راضي به زحمت شما نيستم. چون مطمئن شدم که ديگه ربطي به کوئري نداره و سوالم انگار ديگه مربوط به اين تالار نميشه. حالا يه جا پرسيدم با Persia.dll چطور ميشه مثلاً 2012 که يه int هست تبديل بشه به 1391 و مثلاً 12 تبديل بشه به آذر. حالا منتظرم ببينم جوابم رو ميدن يا نه.
خيلي از همگي ممنونم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.