Obtenir seulement le mois et L'année à partir de la DATE SQL
J'ai besoin d'accéder seulement mois.Champ année à partir de la date dans SQL Server.
17 réponses
En plus des suggestions déjà données, il y a une autre possibilité que je peux déduire de votre question:
- Vous voulez toujours que le résultat soit une date
- Mais vous voulez 'jeter' les jours, les heures, etc
- Laisser un champ de date Année/Mois uniquement
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Cela obtient le nombre de mois entiers à partir d'une date de base (0), puis les ajoute à cette date de base. Ainsi arrondi au mois dans lequel la date est dans.
Remarque: dans SQL Server 2008, vous aurez toujours le temps attaché comme 00: 00: 00.000 Ce n'est pas exactement la même chose que de "supprimer" toute notation du jour et de l'heure. Aussi le jour fixé à la première. par exemple 2009-10-01 00: 00: 00.000
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
SELECT convert(varchar(7), getdate(), 126)
Vous pouvez consulter ce site: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
La sortie ressemblera à: 'décembre 2013'
Il y a deux fonctions SQL pour le faire:
- DATEPART()
- AN() et MOIS().
Reportez-vous à la documentation liée pour plus de détails.
Cela peut également être utile.
SELECT YEAR(0), MONTH(0), DAY(0);
Ou
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
Ou
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
Écrivons-le de cette façon: YEAR(anySqlDate) et MONTH(anySqlDate). Essayez-le avec YEAR(GETDATE()) par exemple.
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month
example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1
J'interprète votre question de deux façons.
A) vous avez seulement besoin de mois et D'année séparément, auquel cas voici la réponse
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
B)
Vous voulez afficher à partir d'une date donnée disons '2009-11-24 09:01:55.483' dans mois.Année format. Donc, la sortie devrait venir comme 11.2009 dans ce cas.
Si c'est supposé être le cas, essayez ceci (entre autres alternatives)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
CONCAT (datepart (yy, DATE), FORMAT (DATE,' MM'))
Vous donne par exemple 201601 si vous voulez un résultat à six chiffres
Essayez ceci
select to_char(DATEFIELD,'MON') from YOUR_TABLE
Par exemple.
select to_char(sysdate, 'MON') from dual
Certaines bases de données telles que MS ACCESS ou RODBC peuvent ne pas prendre en charge les fonctions SQL SERVER, mais pour toute base de données ayant la fonction FORMAT, Vous pouvez simplement faire ceci:
SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
MA base de données ne supporte pas la plupart des fonctions ci-dessus, mais j'ai trouvé que cela fonctionne:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
Par exemple:
SELECT SUBSTR(created, 1,7) FROM table;
Renvoie l'année et le mois au format "AAAA-mm"
Sélectionnez Convertir (varchar (11), transfer_date, 106)
M'a obtenu le résultat souhaité de la date formatée comme 07 Mar 2018
Ma colonne 'transfer_date' est une colonne de type datetime et j'utilise SQL Server 2017 sur azure
Pour le résultat: "AAAA-MM"
SELECT cast(ANS (), varchar) + '-' + cast(Mois() as varchar)