Principales respuestas
Conflicto para consultar fecha SQL Server 2014

Pregunta
-
Hola tengo un problema con una consulta de una fecha, intento sacar el numero del mes o del dia, segun una fecha enviada por parametro.
al hacer una consulta que me devuelva el numero del mes, me devuelve es el numero del dia, y al consultar el numero del dia me devuelve el numero del mes, El idioma del equipo esta en Español(España)
CREATE PROCEDURE [dbo].[PA_prueba] (@FECHA_MES DATETIME ) AS BEGIN SELECT DATEPART (DD,(@FECHA_MES)) END
luego le envio el parametro
USE [BD_Aplicacion] GO DECLARE @return_value int EXEC @return_value = [dbo].[PA_prueba] @FECHA_MES = N'2019-03-06' /*(YYYY,MM,DD)formato fecha*/ SELECT 'Return Value' = @return_value GO
el resultado es este. deveria traerme 6
muchas gracias por su ayuda!!
Respuestas
-
Hola camilogarzon0120:
Pasale la fecha en formato ISO yyyymmdd y da igual como este el idioma establecido en la conexión a la base de datos, siempre te devolvera el datepart el valor que va como mm.
ALTER PROCEDURE [dbo].[PA_prueba] (@FECHA_MES DATETIME ) AS BEGIN SELECT DATEPART (mm,(@FECHA_MES)) END go EXEC [dbo].[PA_prueba] @FECHA_MES = '20190306' /*(YYYYMMDD)formato fecha*/ GO
- Marcado como respuesta camilogarzon0120 viernes, 8 de marzo de 2019 19:52
-
Usa la funcion CONVERT con estilo 112.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Marcado como respuesta camilogarzon0120 viernes, 8 de marzo de 2019 20:07
Todas las respuestas
-
Hola Camilo,
Por lo que veo estás seteando "DD" en la función del store cuando queres imprimir el mes.
Es decir, deberías utilizar este sp para MES:
ALTER PROCEDURE [dbo].[PA_prueba] (@FECHA_MES DATETIME) AS BEGIN SELECT DATEPART (MM,(@FECHA_MES)) END
Y éste para día:
ALTER PROCEDURE [dbo].[PA_prueba] (@FECHA_MES DATETIME) AS BEGIN SELECT DATEPART (DD,(@FECHA_MES)) END
Francisco Ingaramo | Microsoft Certified Professional |
blog: https://dbownerblog.wordpress.com/in: https://www.linkedin.com/in/francisco-ingaramo-000500aa/
- Propuesto como respuesta Pedro Alfaro viernes, 8 de marzo de 2019 18:55
-
Por que estas usando valor de retorno?
El valor de retorno se usa para indicar si el sp se ejecuto correctamente (0) o un # dado si hubo error. Esto se hace manipulando el valor mediante el comando RETURN.
Si quieres ver ese valor en un parametro de salida entonces debes agregarlo aunque no se cual es el proposito de este sp ya que puedes usar la funcion DATEPART directamente.
CREATE PROCEDURE [dbo].[PA_prueba]
@FECHA_MES DATETIME,
@DIA tinyint OUTPUT
AS
BEGIN
SET @DIA = DATEPART (DD, @FECHA_MES);
RETURN 0;
ENDGO
declare @d tinyint, @rv int;
exec @rv = dbo.PA_prueba @FECHA_MES = '20190308', @DIA = @d OUTPUT;
select @rv as [@rv], @d as [@d];
GO
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Propuesto como respuesta Pedro Alfaro viernes, 8 de marzo de 2019 18:55
- Editado HunchbackMVP viernes, 8 de marzo de 2019 19:18
-
Hola Francisco, creo que no entediste la pregunta.
cuando utilizo el sp para el mes, me duvuelve el dia.
y cuando utilizo el sp par el dia , me devuelve el mes.
como hago para arreglar este error, no se si sera por el idioma del equipo o el sql server
-
Hola camilogarzon0120:
Pasale la fecha en formato ISO yyyymmdd y da igual como este el idioma establecido en la conexión a la base de datos, siempre te devolvera el datepart el valor que va como mm.
ALTER PROCEDURE [dbo].[PA_prueba] (@FECHA_MES DATETIME ) AS BEGIN SELECT DATEPART (mm,(@FECHA_MES)) END go EXEC [dbo].[PA_prueba] @FECHA_MES = '20190306' /*(YYYYMMDD)formato fecha*/ GO
- Marcado como respuesta camilogarzon0120 viernes, 8 de marzo de 2019 19:52
-
-
Usa la funcion CONVERT con estilo 112.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Marcado como respuesta camilogarzon0120 viernes, 8 de marzo de 2019 20:07