J'ai besoin du mois + année à partir de la date et heure dans SQL Server comme «janvier 2008». Je regroupe la requête par mois, année. J'ai recherché et trouvé des fonctions comme datepart, convertir, etc., mais aucune d'entre elles ne semble utile pour cela. Est-ce que j'ai râté quelque chose? Y a-t-il une fonction pour cela?
sql
sql-server
Malik Daud Ahmad Khokhar
la source
la source
Réponses:
Si vous voulez dire que vous voulez les renvoyer sous forme de chaîne, dans ce format;
SELECT CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) FROM customers
Voici les autres options de format
la source
select datepart(month,getdate()) -- integer (1,2,3...) ,datepart(year,getdate()) -- integer ,datename(month,getdate()) -- string ('September',...)
la source
datepart(month,getdate())
etdatepart(year,getdate())
. Que sont le mois et l' année ?À partir de SQL Server 2012, vous pouvez utiliser:
SELECT FORMAT(@date, 'yyyyMM')
la source
Utilisation:
select datepart(mm,getdate()) --to get month value select datename(mm,getdate()) --to get name of month
la source
Drôle, je jouais juste en écrivant cette même requête dans SQL Server puis 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
Il produit la sortie suivante (exemple).
la source
Dans SQL Server 2012, ci-dessous peut être utilisé
sélectionnez FORMAT (getdate (), 'MMM yyyy')
Cela donne exactement "juin 2016"
la source
Que dis-tu de ça?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
la source
la source
Ce format n'existe pas. Vous devez faire une combinaison de deux choses,
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
la source
la meilleure façon d'y parvenir est avec:
il conservera votre type de date / heure
la source
renvoie le nom complet du mois, -, année complète par exemple
March-2017
la source
J'ai eu le même problème et après avoir regardé autour de moi, j'ai trouvé ceci:
SELECT DATENAME(yyyy, date) AS year FROM Income GROUP BY DATENAME(yyyy, date)
Cela fonctionne très bien!
la source
La conversion de la date en premier du mois vous permet de regrouper et de classer par un seul attribut, et c'est plus rapide selon mon expérience.
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)
la source
---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
la source
donne le format "2006-04"
la source
La question concerne SQL Server 2005, la plupart des réponses ici concernent la version ultérieure de SQL Server.
select convert (varchar(7), getdate(),20) --Typical output 2015-04
SQL Server 2005 n'a pas de fonction de date qui a été introduite dans SQL Server 2008
la source
Oui, vous pouvez utiliser
datename(month,intime)
pour obtenir le mois sous forme de texte.la source
Réponse: MONTH_ Janvier Janvier Septembre Octobre Décembre Octobre Septembre
la source
Cela fonctionne très bien.
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
la source
Ce qui suit fonctionne parfaitement! Je viens de l'utiliser, essayez-le.
la source