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