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.
 

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.

Preguntas similares