Campo calculado

10/01/2008 - 12:05 por Andresj | Informe spam
Hola,
En una tabla tengo un campo tipo SmallDateTime. Y quiero poner otro campo
calculado que podrá tener 3 valores:
0- Si la fecha representa un dia entre lunes y viernes
1-Si la fecha representa un sábado
2-Si la fecha representa un domingo.

para ello hice una funcion:

CREATE FUNCTION [dbo].[TipusDia]
(
@Data smallDateTime
)
RETURNS int
AS
BEGIN
Declare @d int
declare @f int
declare @tipus int


SELECT @d = Cast(DatePart(weekDay, @Data) AS int)

SET @Tipus = 0
IF (@d =6) //Sabado es 6 SOLO si @@DATEFIRST = 1
set @Tipus = 1
ELSE IF (@d = 7)
set @Tipus = 2

return @Tipus
END

pero todo esto depende del valor de @@DATEFIRST.
Luego pensé en definir dentro de la función: SET DATEFIRST 1 (lunes). Pero
me dá error.

Como puedo hacer para que independientemente de la configuración del
servidor esto funcione?
Grácias.

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
10/01/2008 - 13:08 | Informe spam
Hola Andrés,

Puedes resolver el problema utilizando

select @dÚTEPART(weekday, getdate() + @@DATEFIRST -1)

con lo que siempre obtendrás 1 para lunes, 2 para martes, etc.
independientemente de la configuración.

Un saludo,

Rubén

"Andresj" wrote in message
news:
Hola,
En una tabla tengo un campo tipo SmallDateTime. Y quiero poner otro campo
calculado que podrá tener 3 valores:
0- Si la fecha representa un dia entre lunes y viernes
1-Si la fecha representa un sábado
2-Si la fecha representa un domingo.

para ello hice una funcion:

CREATE FUNCTION [dbo].[TipusDia]
(
@Data smallDateTime
)
RETURNS int
AS
BEGIN
Declare @d int
declare @f int
declare @tipus int


SELECT @d = Cast(DatePart(weekDay, @Data) AS int)

SET @Tipus = 0
IF (@d =6) //Sabado es 6 SOLO si @@DATEFIRST = 1
set @Tipus = 1
ELSE IF (@d = 7)
set @Tipus = 2

return @Tipus
END

pero todo esto depende del valor de @@DATEFIRST.
Luego pensé en definir dentro de la función: SET DATEFIRST 1 (lunes). Pero
me dá error.

Como puedo hacer para que independientemente de la configuración del
servidor esto funcione?
Grácias.

Respuesta Responder a este mensaje
#2 Alex Martínez
10/01/2008 - 13:13 | Informe spam
Si no me equivoco, SELECT (DATEPART (dw , @Data) + @@datefirst) % 7
devolverá siempre 6 para los sábados, independientemente del valor de
@@datefirst.

Saludos,
Alex


"Andresj" escribió en el mensaje
news:
Hola,
En una tabla tengo un campo tipo SmallDateTime. Y quiero poner otro campo
calculado que podrá tener 3 valores:
0- Si la fecha representa un dia entre lunes y viernes
1-Si la fecha representa un sábado
2-Si la fecha representa un domingo.

para ello hice una funcion:

CREATE FUNCTION [dbo].[TipusDia]
(
@Data smallDateTime
)
RETURNS int
AS
BEGIN
Declare @d int
declare @f int
declare @tipus int


SELECT @d = Cast(DatePart(weekDay, @Data) AS int)

SET @Tipus = 0
IF (@d =6) //Sabado es 6 SOLO si @@DATEFIRST = 1
set @Tipus = 1
ELSE IF (@d = 7)
set @Tipus = 2

return @Tipus
END

pero todo esto depende del valor de @@DATEFIRST.
Luego pensé en definir dentro de la función: SET DATEFIRST 1 (lunes). Pero
me dá error.

Como puedo hacer para que independientemente de la configuración del
servidor esto funcione?
Grácias.

Respuesta Responder a este mensaje
#3 Andresj
10/01/2008 - 14:22 | Informe spam
Perfecto!
Grácias a ambos.

"Andresj" escribió en el mensaje
news:
Hola,
En una tabla tengo un campo tipo SmallDateTime. Y quiero poner otro campo
calculado que podrá tener 3 valores:
0- Si la fecha representa un dia entre lunes y viernes
1-Si la fecha representa un sábado
2-Si la fecha representa un domingo.

para ello hice una funcion:

CREATE FUNCTION [dbo].[TipusDia]
(
@Data smallDateTime
)
RETURNS int
AS
BEGIN
Declare @d int
declare @f int
declare @tipus int


SELECT @d = Cast(DatePart(weekDay, @Data) AS int)

SET @Tipus = 0
IF (@d =6) //Sabado es 6 SOLO si @@DATEFIRST = 1
set @Tipus = 1
ELSE IF (@d = 7)
set @Tipus = 2

return @Tipus
END

pero todo esto depende del valor de @@DATEFIRST.
Luego pensé en definir dentro de la función: SET DATEFIRST 1 (lunes). Pero
me dá error.

Como puedo hacer para que independientemente de la configuración del
servidor esto funcione?
Grácias.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida