Necesito el mes + año de la fecha y hora en SQL Server como 'Ene 2008'. Estoy agrupando la consulta por mes, año. He buscado y encontrado funciones como datepart, convert, etc., pero ninguna de ellas me parece útil. ¿Me estoy perdiendo de algo? ¿Hay una función para esto?Obtener mes y año a partir de una fecha y hora en SQL Server 2005
Respuesta
Si quiere decir que quiere que vuelvan como una cadena, en ese formato;
SELECT
CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120)
FROM customers
Intenté usar CONVERT (CHAR (4), GetDate(), 100) en mi SQL Server y en su lugar obtuve "09 1". Obtuve el espacio y un "1" para el 17. usando "seleccionar CONVERT (varchar, GetDate(), 100)" yield "09 17 2009 4:59 PM" – Nap
Eso es raro - de los documentos a los que he vinculado, 100 debe devolver una abreviatura de tres letras del mes y un espacio, si se coloca en un CHAR (4). Pero luego, el resultado que ha publicado para CONVERT (varchar, getdate(), 100) parece diferente de lo que esperaría ver. ¿Qué versión de SQLServer estás usando? ¿Qué configuración de localización/internacionalización está utilizando (no es que esto debería importar a un formato 100). – robsoft
Ese formato no existe. Necesita hacer una combinación de dos cosas,
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
select
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)
Entonces, creo que esto es lo que quiero, pero no veo cómo TSQL podría entender la diferencia entre 'datepart (month, getdate())' y 'datepart (year, getdate())'. ¿Qué son ** mes ** y ** año **? – jp2code
@ jp2code ** month ** y ** year ** son básicamente constantes definidas aquí: http://msdn.microsoft.com/en-us/library/ms174420.aspx. TSQL los entiende de la misma manera que usted, leyéndolos :) –
LOL - Gracias Zach. Estuve mucho tiempo mirando eso antes de descubrirlo en un sitio diferente. – jp2code
(Month(Created) + ',' + Year(Created)) AS Date
divertido, estaba simplemente jugando escribir esta misma consulta en SQL Server y, a continuación 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 la siguiente salida (ejemplo).
Month | Year | Total
January | 2009 | 2
que tenían el mismo problema y después de mirar encontré esto:
SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)
Está funcionando muy bien!
¿Qué tal esto?
Select DateName(Month, getDate()) + ' ' + DateName(Year, getDate())
Sí, puede utilizar datename(month,intime)
para obtener el mes en el texto.
Uso:
select datepart(mm,getdate()) --to get month value
select datename(mm,getdate()) --to get name of month
Los siguientes funciona perfectamente! Lo acabo de usar, pruébalo.
date_format(date,'%Y-%c')
esta no es una función o declaración de servidor sql válida –
la conversión de la fecha al primer día del mes le permite agrupar Por y orden de 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)
---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
cast(cast(sq.QuotaDate as date) as varchar(7))
da "2006-04" formato
la mejor manera de hacerlo es con:
dateadd(month,datediff(month,0,*your_date*),0)
que se mantendrá el tipo de fecha y hora
Esta es, de lejos, la mejor respuesta para forzar cualquier fecha que sea solo el mes y el año, ignorando los componentes de día y hora. Mucho mejor que la respuesta aceptada porque la información se puede ordenar correctamente y funciona correctamente como una fecha en las herramientas de informes posteriores. –
A partir de SQL Server 2012, puede usar:
SELECT FORMAT(@date, 'yyyyMM')
Bien jugado señor ... esto respondió mi pregunta en 2012 –
Me alegro de haber desplazado hasta aquí, esto es simple y ordenado. ¡Gracias! – Niklas
Esta es una valiosa contribución, pero debería haber sido respondida en otro lugar, http://stackoverflow.com/a/43196370/124486 –
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 función de la fecha which was introduced in SQL Server 2008
,datename(month,(od.SHIP_DATE)) as MONTH_
Respuesta: mes_ enero enero septiembre octubre diciembre octubre septiembre
En SQL Server 2012, a continuación se puede utilizar
seleccione FORMATO (getdate(), 'MMM aaaa')
Esto da exacta "Jun 2016"
devuelve el nombre completo del mes, -, año completo, por ejemplo, March-2017
CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))
Ya hay otras 18 respuestas a esta pregunta. ¿Qué nueva información agrega tu respuesta? – stannius
Es un trabajo excelente.
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
- 1. SQL Server 2005 Fecha Marca de fecha y hora Consulta
- 2. Formato de fecha y hora para un mes y año
- 3. ¿Almacena solo mes y año en SQL Server 2008?
- 4. Uso de SQL Server 2008 y SQL Server 2005 y fecha y hora
- 5. VB.NET Obtener solo el año a partir de la fecha
- 6. extracto php año/mes/día/hora/minuto/segundos a partir de una fecha
- 7. ¿Cómo obtener la última inserción/actualización/eliminación de fecha y hora en Sql Server 2005?
- 8. ¿Convertir columna de fecha y hora a columna de fecha y hora2 en SQL Server?
- 9. Crear una fecha y hora en Rails con mes, día y año
- 10. Obtenga el año/mes/día de una fecha y hora en php?
- 11. Persistencia de una columna de fecha y hora calculada en SQL Server 2005
- 12. ¿Cómo puedo agrupar por mes y año cuando solo tengo un campo de fecha y hora?
- 13. Generar NSDate a partir del día, mes y año
- 14. Comparar la fecha actual con la fecha y hora almacenada usando el mes de un año solamente
- 15. Pregunta simple de fecha y hora sql
- 16. LINQ: Agrupar por mes y año dentro de un campo de fecha y hora
- 17. SQL Server: convertir ((int) años, (int) meses, (int) días) de fecha y hora a
- 18. ¿Comparar una cadena de fecha a fecha y hora en SQL Server?
- 19. Crear una fecha solo con mes y día, sin año
- 20. diferencia de dos fecha y hora en SQL Server
- 21. Cómo calcular la hora local desde una fecha y hora utc en tsql (sql 2005)?
- 22. fecha Dividir en diferentes columnas de año, mes y día
- 23. SQL Server 2000 convertir fecha y hora para llegar hhmm
- 24. Configuración de SQL Server 2008 Variable de fecha y hora
- 25. Fecha localizada (mes y día) y hora con NSDate
- 26. Intercalación de clientes y SQL Server 2005
- 27. Obtener detalles de la fecha (día, mes, año) en GWT
- 28. Oracle Sql obtiene solo mes y año en el tipo de datos de fecha
- 29. Creando DATETIME a partir de FECHA y HORA
- 30. Crear campo de fecha con solo mes y año - Drupal
@Evan Carroll - ¿Esto constituye un secuestro de la pregunta? Si tiene una respuesta superior a la pregunta, ¿no se debe proporcionar como respuesta a la pregunta en lugar de señalar a la gente una pregunta diferente? – STLDeveloper
@STLDeveloper cómo es el secuestro. La pregunta llama para 2005? No lo puse ahí. No estoy buscando 2005 ... Desafortunadamente, la mejor respuesta aquí no funciona en 2005, es 2012-explícita. ¿Debo desvirtuar las respuestas de 2005 por ser arcaico? –
@STLDeveloper en realidad, no me importa aquí. =) mi postura oficial siempre ha sido aconsejar a las personas a utilizar PostgreSQL, no estoy seguro de por qué estoy tratando de ayudar. –