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)