Maak de maand en het jaar van een datetime in SQL Server 2005

Ik heb de maand+jaar nodig vanaf de datetime in SQL Server zoals ‘Jan 2008’. Ik groepeer de zoekopdracht per maand, jaar. Ik heb gezocht en gevonden functies zoals datepart, convert, etc., maar geen van hen lijkt hier nuttig voor. Mis ik hier iets? Is hier een functie voor?


Antwoord 1, autoriteit 100%

select 
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)

Antwoord 2, autoriteit 44%

Als je bedoelt dat je ze terug wilt als een string, in dat formaat;

SELECT 
  CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) 
FROM customers

Hier zijn de andere indelingsopties


Antwoord 3, autoriteit 36%

Vanaf SQL Server 2012 kunt u het volgende gebruiken:

SELECT FORMAT(@date, 'yyyyMM')

Antwoord 4, autoriteit 7%

Gebruik:

select datepart(mm,getdate())  --to get month value
select datename(mm,getdate())  --to get name of month

Antwoord 5, autoriteit 7%

Grappig, ik was net aan het spelen om dezelfde query uit te schrijven in SQL Server en vervolgens in 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

Het produceert de volgende output (voorbeeld).

Month | Year | Total
January | 2009 | 2

Antwoord 6, autoriteit 7%

In SQL server 2012 kan onderstaand worden gebruikt

selecteer FORMAT(getdate(), ‘MMM yyyy’)

Dit geeft exact “juni 2016”


Antwoord 7, autoriteit 4%

Wat dacht je hiervan?

Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )

Antwoord 8, autoriteit 3%

( Month(Created) + ',' + Year(Created) ) AS Date

Antwoord 9, autoriteit 3%

Dat formaat bestaat niet. Je moet een combinatie van twee dingen doen,

select convert(varchar(4),getdate(),100)  + convert(varchar(4),year(getdate()))

Antwoord 10, autoriteit 2%

de beste manier om dat te doen is met :

dateadd(month,datediff(month,0,*your_date*),0)

het behoudt je datetime-type


Antwoord 11

retourneert de naam van de volledige maand, -, volledig jaar b.v. March-2017

CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))

Antwoord 12

Ik had hetzelfde probleem en na wat rondkijken vond ik dit:

SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)

Het werkt geweldig!


Antwoord 13

Door de datum te converteren naar de eerste van de maand kun je Groeperen op en Sorteren op één kenmerk, en het is sneller in mijn ervaring.

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)

Antwoord 14

---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

Antwoord 15

cast(cast(sq.QuotaDate as date) as varchar(7))

geeft het formaat “2006-04”


Antwoord 16

De vraag gaat over SQL Server 2005, veel van de antwoorden hier zijn voor een latere versie van SQL Server.

select convert (varchar(7), getdate(),20)
--Typical output 2015-04

SQL Server 2005 heeft geen datumfunctie die werd geïntroduceerd in SQL Server 2008


Antwoord 17

Ja, u kunt datename(month,intime)gebruiken om de maand in tekst te krijgen.


Antwoord 18

 ,datename(month,(od.SHIP_DATE)) as MONTH_

Antwoord:
MAAND_
januari
januari
september
oktober
december
oktober
september


Antwoord 19

Het werkt geweldig.

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

Antwoord 20

Het volgende werkt perfect! Ik heb het net gebruikt, probeer het eens.

date_format(date,'%Y-%c')

Other episodes