Solución:
Podría usar algo como esto para hacer su propia fecha y hora:
DECLARE @year INT = 2012
DECLARE @month INT = 12
DECLARE @day INT = 25
SELECT CAST(CONVERT(VARCHAR, @year) + '-' + CONVERT(VARCHAR, @month) + '-' + CONVERT(VARCHAR, @day)
AS DATETIME)
Utilizando el 3
de su ejemplo, podría hacer esto:
dateadd(dd, 3 -1, dateadd(mm, datediff(mm,0, current_timestamp), 0))
Funciona al encontrar la cantidad de meses desde la fecha de la época, agregar esos meses a la fecha de la época y luego agregar la cantidad deseada de días a ese resultado anterior. Suena complicado, pero se basa en lo que era la forma canónica de truncar fechas anteriores a la Date
(no DateTime) tipo agregado a Sql Server 2008.
Probablemente verá otras respuestas aquí que sugieren la creación de cadenas de fecha. Te insto a evitar sugerencias para usar cadenas. Es probable que el uso de cadenas sea mucho más lento, y existen algunos errores potenciales con las colaciones / formatos de fecha alternativos.
CREATE FUNCTION DATEFROMPARTS
(
@year int,
@month int,
@day int
)
RETURNS datetime
AS
BEGIN
declare @d datetime
select @d = CAST(CONVERT(VARCHAR, @year) + '-' + CONVERT(VARCHAR, @month) + '-' + CONVERT(VARCHAR, @day) AS DATETIME)
RETURN @d
END
GO
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)