Aku butuh bulan+tahun dari datetime di SQL Server seperti 'Jan 2008'. I'm pengelompokan query berdasarkan bulan, tahun. I've mencari dan menemukan fungsi-fungsi seperti datepart, mengkonversi, dll., tapi tidak satupun dari mereka tampaknya berguna untuk ini. Aku melewatkan sesuatu di sini? Apakah ada fungsi untuk ini?
Lucu, aku hanya bermain-main menulis ini sama dengan query di SQL Server dan kemudian LINQ.
SELECT
DATENAME(mm, article.Created) AS Month,
DATENAME(yyyy, article.Created) AS Year,
COUNT(*) AS Total
FROM Articles AS article
GROUP BY
DATENAME(mm, article.Created),
DATENAME(yyyy, article.Created)
ORDER BY Month, Year DESC
Ini menghasilkan berikut ouput (contoh).
Month | Year | Total
January | 2009 | 2
Mengkonversi tanggal untuk bulan pertama memungkinkan anda untuk Group By dan Order By atribut tunggal, dan itu's lebih cepat dalam pengalaman saya.
declare @mytable table(mydate datetime)
declare @date datetime
set @date = '19000101'
while @date < getdate() begin
insert into @mytable values(@date)
set @date = dateadd(day,1,@date)
end
select count(*) total_records from @mytable
select dateadd(month,datediff(month,0,mydate),0) first_of_the_month, count(*) cnt
from @mytable
group by dateadd(month,datediff(month,0,mydate),0)
---Lalmuni Demos---
create table Users
(
userid int,date_of_birth date
)
---insert values---
insert into Users values(4,'9/10/1991')
select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years,
MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months,
DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days,
from users
Pertanyaannya adalah tentang SQL Server 2005, banyak jawaban di sini adalah untuk versi SQL Server.
select convert (varchar(7), getdate(),20)
--Typical output 2015-04
SQL Server 2005 tidak memiliki fungsi tanggal yang diperkenalkan di SQL Server 2008
It's bekerja besar.
DECLARE @pYear VARCHAR(4)
DECLARE @pMonth VARCHAR(2)
DECLARE @pDay VARCHAR(2)
SET @pYear = RIGHT(CONVERT(CHAR(10), GETDATE(), 101), 4)
SET @pMonth = LEFT(CONVERT(CHAR(10), GETDATE(), 101), 2)
SET @pDay = SUBSTRING(CONVERT(CHAR(10), GETDATE(), 101), 4,2)
SELECT @pYear,@pMonth,@pDay