Solo necesito seleccionar el primer día del mes de una variable de fecha y hora dada.
Sé que es bastante fácil hacerlo usando este tipo de código:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Pero esto no es muy elegante, y probablemente tampoco sea muy rápido.
¿Hay una mejor manera de hacer esto? Estoy usando SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
le dará el último día del mes.Además de toda la respuesta anterior, una forma basada en una función introducida en
sql 2012
fuente
A partir de SQL Server 2012:
fuente
La transmisión de una cadena (es decir, "5/1/2009") a fecha y hora es ciertamente más legible, pero encontramos un código hace un tiempo que regresaría el primero del mes ...
fuente
Consulta simple:
fuente
Probablemente sea bastante rápido. ¿Por qué no crearlo como una función sql?
fuente
Esto también funciona:
fuente
Por favor use esto
Para el servidor 2012
Antes del servidor 2012
fuente
Primer y último día del mes actual:
fuente
fuente
Operand type clash: date is incompatible with int
. ¿Supongo que es porque estás tratando de usar el-
operador en una cita?fuente
Esta podría ser una nueva función, pero también puede usar funciones antiguas:
Si la fecha en la variable fuera, por ejemplo
'2017-10-29'
, devolvería una fecha de'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
fuente
Los futuros googlers, en MySQL, intenten esto:
fuente
sql-server
pregunta,date_sub
y lointerval
sonmysql
.Usé GETDATE () como fecha para trabajar, puede reemplazarlo con la fecha que necesita.
Así es como funciona: Primero formateamos la fecha en AAAAMMDD ... truncando el formato para mantener solo los 6 caracteres más a la izquierda para mantener solo la porción AAAAMM, y luego agregamos '01' como el mes, ¡y listo! tienes el primer día del mes actual.
Por cierto, ¡el rendimiento es excelente en esto!
fuente
Si está viendo esto hoy y usa SQL Server 2012 o más reciente, tiene la función EOMONTH que facilita las cosas:
Puede cambiar GETDATE () con la variable de fecha que desee.
fuente
Aquí podemos usar la consulta a continuación para la primera fecha del mes y la última fecha del mes.
fuente
Si usa SQL Server 2012 o superior;
fuente
El -2 te dará el primer día del mes pasado. es decir, getdate () es 15/10/18. Sus resultados serían el 1/9/18. Cambie a -1 y sus resultados serían 1/10/18. 0 sería el inicio del próximo mes, 11/1/2018 .. etc. etc.
o
fuente
Intente ejecutar la siguiente consulta:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
fuente
seleccione CONVERT (date, DATEADD (dd, - (DATEPART (dd, getdate ()) - 1), getdate ()), 120)
Esta función le proporcionará la fecha parte de la fecha de inicio del mes
fuente
.................................................. ...................
Si no desea la hora, conviértala a DATE o si desea hacerla a las 0:00:00, Convertir a DATE y luego nuevamente a DATETIME.
Cambie GETDATE () a la fecha que desee.
fuente
Personalmente recomendé el siguiente sql porque cuando intento usar la función de fecha en la cláusula de condición, disminuye mucho la velocidad de mi consulta.
de todos modos, siéntase libre de probar esto.
fuente
No para competir con ninguna de las grandes mentes aquí, sino una simple sugerencia ligeramente diferente a la respuesta aceptada anteriormente.
fuente
Me gusta usar
FORMAT
, incluso puedes especificar una horafuente
En SQL Server 2012,
fuente
Esta consulta debería funcionar muy bien en MySQL:
fuente
Para cualquiera que todavía busque una respuesta, esto funciona de maravilla y elimina cualquier fecha. La marca de tiempo es opcional, en caso de que necesite especificarse, pero también funciona sin ella.
fuente
Obtenga la primera fecha y la última fecha en la fecha que pasamos como parámetro en SQL
fuente
Así es como lo haría en MySQL:
fuente
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')