Necesito el mes + año desde la fecha y hora en SQL Server como 'Enero de 2008'. Estoy agrupando la consulta por mes, año. He buscado y encontrado funciones como datepart, convert, etc., pero ninguna de ellas parece útil para esto. ¿Me estoy perdiendo de algo? ¿Hay alguna función para esto?
sql
sql-server
Malik Daud Ahmad Khokhar
fuente
fuente
Respuestas:
Si quiere decir que los quiere de vuelta como una cadena, en ese formato;
SELECT CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) FROM customers
Aquí están las otras opciones de formato
fuente
select datepart(month,getdate()) -- integer (1,2,3...) ,datepart(year,getdate()) -- integer ,datename(month,getdate()) -- string ('September',...)
fuente
datepart(month,getdate())
ydatepart(year,getdate())
. ¿Qué son mes y año ?A partir de SQL Server 2012, puede usar:
SELECT FORMAT(@date, 'yyyyMM')
fuente
Utilizar:
select datepart(mm,getdate()) --to get month value select datename(mm,getdate()) --to get name of month
fuente
Es curioso, estaba jugando a escribir esta misma consulta en SQL Server y luego en LINQ.
SELECT DATENAME(mm, article.Created) AS Month, DATENAME(yyyy, article.Created) AS Year, COUNT(*) AS Total FROM Articles AS article GROUP BY DATENAME(mm, article.Created), DATENAME(yyyy, article.Created) ORDER BY Month, Year DESC
Produce el siguiente resultado (ejemplo).
fuente
En SQL Server 2012, se puede utilizar a continuación
seleccione FORMAT (getdate (), 'MMM yyyy')
Esto da un "junio de 2016" exacto
fuente
¿Qué tal esto?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
fuente
fuente
Ese formato no existe. Necesita hacer una combinación de dos cosas,
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
fuente
la mejor manera de hacerlo es con:
mantendrá su tipo de fecha y hora
fuente
devuelve el nombre del mes completo, -, año completo, por ejemplo
March-2017
fuente
Tuve el mismo problema y después de mirar alrededor encontré esto:
SELECT DATENAME(yyyy, date) AS year FROM Income GROUP BY DATENAME(yyyy, date)
¡Está funcionando muy bien!
fuente
Convertir la fecha al primero del mes le permite Agrupar por y Ordenar por un solo atributo, y es más rápido en mi experiencia.
declare @mytable table(mydate datetime) declare @date datetime set @date = '19000101' while @date < getdate() begin insert into @mytable values(@date) set @date = dateadd(day,1,@date) end select count(*) total_records from @mytable select dateadd(month,datediff(month,0,mydate),0) first_of_the_month, count(*) cnt from @mytable group by dateadd(month,datediff(month,0,mydate),0)
fuente
---Lalmuni Demos--- create table Users ( userid int,date_of_birth date ) ---insert values--- insert into Users values(4,'9/10/1991') select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years, MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months, DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days, from users
fuente
da formato "2006-04"
fuente
La pregunta es sobre SQL Server 2005, muchas de las respuestas aquí son para la versión posterior de SQL Server.
select convert (varchar(7), getdate(),20) --Typical output 2015-04
SQL Server 2005 no tiene la función de fecha que se introdujo en SQL Server 2008
fuente
Sí, puede usar
datename(month,intime)
para obtener el mes en texto.fuente
Respuesta: MES_ Enero Enero Septiembre Octubre Diciembre Octubre Septiembre
fuente
Funciona genial.
DECLARE @pYear VARCHAR(4) DECLARE @pMonth VARCHAR(2) DECLARE @pDay VARCHAR(2) SET @pYear = RIGHT(CONVERT(CHAR(10), GETDATE(), 101), 4) SET @pMonth = LEFT(CONVERT(CHAR(10), GETDATE(), 101), 2) SET @pDay = SUBSTRING(CONVERT(CHAR(10), GETDATE(), 101), 4,2) SELECT @pYear,@pMonth,@pDay
fuente
¡Lo siguiente funciona perfectamente! Lo acabo de usar, pruébalo.
fuente