Ottenere solo mese e anno da SQL DATE

Devo accedere solo a Month.Year dal campo Data in SQL Server.

Oltre ai suggerimenti forniti, c’è un’altra possibilità che posso dedurre dalla tua domanda:
– Vuoi comunque che il risultato sia un appuntamento
– Ma vuoi “scartare” i giorni, le ore, ecc
– Lasciando un campo solo per anno / mese

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, ), 0) AS [year_month_date_field] FROM  

Ciò ottiene il numero di mesi interi da una data di base (0) e quindi li aggiunge a quella data di base. Arrotondando così fino al mese in cui è la data.

NOTA: in SQL Server 2008, il TEMPO sarà sempre associato a 00: 00: 00.000. Questo non è esattamente lo stesso di “rimozione” di qualsiasi notazione di giorno e ora del tutto. Anche il GIORNO è impostato sul primo. ad es. 2009-10-01 00: 00: 00.000

 select month(dateField), year(dateField) 
 SELECT DATEPART(yy, DateVal) SELECT DATEPART(MM, DateVal) SELECT DATENAME(MM, DateVal) 
 SELECT convert(varchar(7), getdate(), 126) 

Potresti controllare questo sito web: 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 

l’output sarà simile a: “Dicembre 2013”

Ci sono due funzioni SQL per farlo:

  • DATEPART ()
  • ANNO () e MESE () .

Fare riferimento alla documentazione collegata per i dettagli.

Questo può essere utile pure.

 SELECT YEAR(0), MONTH(0), DAY(0); 

o

 SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate()); 

o

 SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField); 

scriviamolo in questo modo: YEAR(anySqlDate) e MONTH(anySqlDate) . Provalo con YEAR(GETDATE()) per esempio.

 convert(varchar(7), , 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), , 120), COUNT(*) from  group by convert(varchar(7), , 120) order by 1 

Sto interpretando la tua domanda in due modi.

a) Hai solo bisogno di mese e anno separatamente, nel qual caso ecco la risposta

 select [YEAR] = YEAR(getdate()) ,[YEAR] = DATEPART(YY,getdate()) , [MONTH] = month(getdate()) ,[MONTH] = DATEPART(mm,getdate()) ,[MONTH NAME] = DATENAME(mm, getdate()) 

b)

Si desidera visualizzare da una determinata data per esempio '2009-11-24 09:01:55.483' nel formato MONTH.YEAR . Quindi l’output dovrebbe arrivare come 11.2009 in questo caso.

Se questo è il caso, prova questo (tra le altre alternative)

 select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'') 
 RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 

CONCAT (datapart (yy, DATE), FORMAT (DATE, ‘MM’))

ti dà ad esempio 201601 se vuoi un risultato a sei cifre

Prova questo

 select to_char(DATEFIELD,'MON') from YOUR_TABLE 

per esempio.

 select to_char(sysdate, 'MON') from dual 

Alcuni database come MS ACCESS o RODBC potrebbero non supportare le funzioni SQL SERVER , ma per qualsiasi database che abbia la funzione FORMAT è sufficiente fare questo:

 SELECT FORMAT(,"YYYY-MM") AS year-date FROM  

Il mio database non supporta la maggior parte delle funzioni sopra tuttavia ho trovato che questo funziona:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

per esempio: SELECT SUBSTR(created, 1,7) FROM table;

restituisce l’anno e il mese nel formato “aaaa-mm”

seleziona convert (varchar (11), transfer_date, 106)

mi ha ottenuto il mio risultato desiderato della data formattato come 07 Mar 2018

La mia colonna ‘transfer_date’ è una colonna di tipo datetime e sto usando SQL Server 2017 su azure

Per risultato: “YYYY-MM”

SELEZIONA cast (YEAR () come varchar) + ‘-‘ + cast (Month () come varchar)