Eu preciso acessar apenas o campo Month.Year from Date no SQL Server.
Eu preciso acessar apenas o campo Month.Year from Date no SQL Server.
Respostas:
Além das sugestões já dadas, há outra possibilidade que posso deduzir da sua pergunta:
- Você ainda quer que o resultado seja uma data
- Mas você quer 'descartar' os dias, horas, etc.
- Partindo de um ano / mês somente campo de data
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Isso obtém o número de meses inteiros a partir de uma data base (0) e os adiciona a essa data base. Arredondando para baixo até o mês em que a data está.
NOTA: No SQL Server 2008, você ainda terá o TIME anexado como 00: 00: 00.000. Isso não é exatamente o mesmo que "remover" qualquer notação de dia e hora. Também o DIA foi definido como o primeiro. por exemplo, 2009-10-01 00: 00: 00.000
select month(dateField), year(dateField)
SELECT convert(varchar(7), getdate(), 126)
Você pode querer conferir este 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
a saída será semelhante a: 'dezembro de 2013'
Existem duas funções SQL para fazer isso:
Consulte a documentação vinculada para obter detalhes.
Isso pode ser útil também.
SELECT YEAR(0), MONTH(0), DAY(0);
ou
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
ou
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
vamos escrever assim: YEAR(anySqlDate)
e MONTH(anySqlDate)
. Experimente com YEAR(GETDATE())
por exemplo.
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
Estou interpretando sua pergunta de duas maneiras.
a) Você só precisa de um mês e um ano separadamente; nesse caso, aqui está a resposta
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
b)
Você deseja exibir a partir de uma determinada data, digamos '2009-11-24 09:01:55.483'
no formato MONTH.YEAR . Portanto, a saída deve ocorrer como 11.2009
neste caso.
Se for esse o caso, tente isso (entre outras alternativas)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
Tente o seguinte:
Português
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
Resultado: maio 2019
Inglês
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)
Resultado: maio de 2019
Se você quiser em outro idioma, altere ' pt-pt ' ou ' en-US ' para qualquer um deles no link
Eu tinha um requisito específico para fazer algo semelhante, onde mostraria mês-ano, o que pode ser feito pelo seguinte:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
No meu caso particular, eu precisava reduzi-lo à abreviação de três letras do mês com um ano de 2 dígitos, parecido com o seguinte:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Meu banco de dados não suporta a maioria das funções acima, porém achei que isso funciona:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
por exemplo:
SELECT SUBSTR(created, 1,7) FROM table;
retorna o ano e o mês no formato "aaaa-mm"
Obter mês e ano a partir da 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), ' ', '-')
Saída: Mar-2019
Inquerir :- Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
Saída: - janeiro-2019
campo de data geral, podemos usar
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
Para resultado: "AAAA-MM"
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
me obteve o resultado desejado da data formatado em 07 de março de 2018
Minha coluna 'transfer_date' é uma coluna do tipo datetime e estou usando o SQL Server 2017 no azure
selecione CONCAT (MÊS (GETDATE ()), '.', ANO (GETDATE ()))
Resultado: 5.2020
selecione CONCAT (DATENAME (MONTH, GETDATE ()), '.', YEAR (GETDATE ()))
Saída: maio.2020