Devo accedere solo al mese. Anno dal campo Data in SQL Server.
Devo accedere solo al mese. Anno dal campo Data in SQL Server.
Risposte:
Oltre ai suggerimenti già forniti, c'è un'altra possibilità che posso dedurre dalla tua domanda:
- Vuoi ancora che il risultato sia una data
- Ma vuoi 'scartare' i Giorni, le Ore, ecc.
- Lasciando un anno / mese solo campo data
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Ciò ottiene il numero di mesi interi da una data di base (0) e quindi li aggiunge a quella data di base. Arrotondando così al mese in cui si trova la data.
NOTA: in SQL Server 2008, avrai ancora TIME associato come 00: 00: 00.000 Questo non equivale esattamente a "rimuovere" 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 convert(varchar(7), getdate(), 126)
Potresti voler visitare questo sito Web: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
l'output sarà simile a "dicembre 2013"
Esistono due funzioni SQL per farlo:
Fare riferimento alla documentazione collegata per i dettagli.
Anche questo può essere utile.
SELECT YEAR(0), MONTH(0), DAY(0);
o
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
o
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
scriviamo in questo modo: YEAR(anySqlDate)
e MONTH(anySqlDate)
. Provalo con YEAR(GETDATE())
ad esempio.
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
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 dire '2009-11-24 09:01:55.483'
in formato MONTH.YEAR . Quindi l'output dovrebbe arrivare come 11.2009
in questo caso.
Se questo dovrebbe essere 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)
Prova questo:
portoghese
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
Risultato: maio 2019
Inglese
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)
Risultato: maggio 2019
Se vuoi in un'altra lingua, cambia ' pt-pt ' o ' en-US ' in uno di questi nel link
Avevo l'obbligo specifico di fare qualcosa di simile in cui avrebbe mostrato mese-anno che può essere fatto come segue:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
Nel mio caso particolare, avevo bisogno di averlo fino all'abbreviazione del mese di 3 lettere con un anno a 2 cifre, simile a questo:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Il mio database non supporta la maggior parte delle funzioni sopra, tuttavia ho scoperto che 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"
Ottieni mese e anno dalla data
DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)
SET @lcYear=(SELECT DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT DATEPART(MONTH,@Date))
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
Uscita: Mar-2019
Query: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
Uscita: - gennaio-2019
datario generale che possiamo usare
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
Per il risultato: "AAAA-MM"
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
mi ha dato il risultato desiderato della data formattata come 07 mar 2018
La mia colonna 'transfer_date' è una colonna di tipo datetime e sto usando SQL Server 2017 su azzurro
seleziona CONCAT (MONTH (GETDATE ()), '.', YEAR (GETDATE ()))
Uscita: 5.2020
seleziona CONCAT (DATENAME (MONTH, GETDATE ()), '.', YEAR (GETDATE ()))
Uscita: maggio 2020