SET

10/07/2007 - 20:07 por Clara | Informe spam
Hola,
Estoy usando SQL Server 2005

Tengo algunas funciones escalares que devuelven el dia de la semana a partir
de DatePart(weekDay, date)
Pero el resultado depende de como esté definido SET DATEFIRST.

Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST aunque
he leido que lo pued obtener a partir de @@DATEFIRST
Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
CREATE FUNCTION funcion

SET DATEFIRST 1 --lunes
...
...
...
SET DATEFIRST @@DATEFIRST
END

porque no me queda claro si @@DATEFIRST depende de la configuracion del
servidor ode la base de datos.
O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la base de
datos?

Grácias

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
10/07/2007 - 22:18 | Informe spam
SET DATEFIRST se establece en tiempo de ejecución y vale durante la sesión.
Usalo para configurar el valor que deseas y consultalo usando @@DATEFIRST


Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Clara" wrote:

Hola,
Estoy usando SQL Server 2005

Tengo algunas funciones escalares que devuelven el dia de la semana a partir
de DatePart(weekDay, date)
Pero el resultado depende de como esté definido SET DATEFIRST.

Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST aunque
he leido que lo pued obtener a partir de @@DATEFIRST
Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
CREATE FUNCTION funcion

SET DATEFIRST 1 --lunes



SET DATEFIRST @@DATEFIRST
END

porque no me queda claro si @@DATEFIRST depende de la configuracion del
servidor ode la base de datos.
O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la base de
datos?

Grácias



Respuesta Responder a este mensaje
#2 Ronald Ramirez Moran
11/07/2007 - 01:53 | Informe spam
@@DATEFIRST obtiene el valor del primer dia de la semana en la sesion
actual. Su valor depende del lenguaje del usuario actual. En tu caso es
posible que estes utilizando un usuario con el parametro "Lenguaje"
configurado con el valor "us_english" (posiblemente), por lo que el valor de
su "DateFirst" es 7(domingo), si en su lugar fuera "spanish", el valor seria
1.

Ahora bien, existen muchas formas "directas" e "indirectas" de cambiar este
valor. Una de ellas es la que tu nos indicas anteriormente, la otra es
configurandole al usuario (o Login) el lenguaje adecuado (Ej. Español). Aqui
unos ejemplos:

ALTER LOGIN [repuser] WITH DEFAULT_LANGUAGE=[Español]

ALTER LOGIN [repuser] WITH DEFAULT_LANGUAGE=[English]

Si deseas cambiarlo de forma predeterminada a todos los usuarios nuevos de
tu servidor, puedes utilizar la siguiente sentencia:

(logins) nuevos:
sys.syslanguages
exec sp_Configure 'Language', '5'
GO
Reconfigure


Saludos Cordiales,


Ronald Ramirez (aka DlanorOk) | http://dlanorok.spaces.live.com



"Clara" wrote in message
news:
Hola,
Estoy usando SQL Server 2005

Tengo algunas funciones escalares que devuelven el dia de la semana a
partir de DatePart(weekDay, date)
Pero el resultado depende de como esté definido SET DATEFIRST.

Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST aunque
he leido que lo pued obtener a partir de @@DATEFIRST
Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
CREATE FUNCTION funcion

SET DATEFIRST 1 --lunes
...
...
...
SET DATEFIRST @@DATEFIRST
END

porque no me queda claro si @@DATEFIRST depende de la configuracion del
servidor ode la base de datos.
O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la base
de datos?

Grácias


Respuesta Responder a este mensaje
#3 Gustavo Larriera (MVP)
11/07/2007 - 17:52 | Informe spam
Usa un stored procedure.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Clara" wrote:

Hola,
Si hago algo asi:
CREATE FUNCTION funcion
@ID int
RETURNS int
AS
BEGIN

SET DATEFIRST 1


END

Me dá el error "Invalid use of side-effecting or time-dependent operator in 'SET COMMAND' within a function"
No puedo usar el SET dentro, no? Como lo establezco?

grácias




"Gustavo Larriera (MVP)" escribió en el mensaje news:
> SET DATEFIRST se establece en tiempo de ejecución y vale durante la sesión.
> Usalo para configurar el valor que deseas y consultalo usando @@DATEFIRST
>
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Clara" wrote:
>
>> Hola,
>> Estoy usando SQL Server 2005
>>
>> Tengo algunas funciones escalares que devuelven el dia de la semana a partir
>> de DatePart(weekDay, date)
>> Pero el resultado depende de como esté definido SET DATEFIRST.
>>
>> Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST aunque
>> he leido que lo pued obtener a partir de @@DATEFIRST
>> Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
>> CREATE FUNCTION funcion
>>
>> SET DATEFIRST 1 --lunes
>>
>>
>>
>> SET DATEFIRST @@DATEFIRST
>> END
>>
>> porque no me queda claro si @@DATEFIRST depende de la configuracion del
>> servidor ode la base de datos.
>> O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la base de
>> datos?
>>
>> Grácias
>>
>>
>>
Respuesta Responder a este mensaje
#4 Clara
11/07/2007 - 19:10 | Informe spam
hola,

El problema es que estas funciones son llamadas por campos calculados.
Bueno. veré qué hago.

grácias


"Gustavo Larriera (MVP)"
escribió en el mensaje
news:
Usa un stored procedure.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Clara" wrote:

Hola,
Si hago algo asi:
CREATE FUNCTION funcion
@ID int
RETURNS int
AS
BEGIN

SET DATEFIRST 1


END

Me dá el error "Invalid use of side-effecting or time-dependent operator
in 'SET COMMAND' within a function"
No puedo usar el SET dentro, no? Como lo establezco?

grácias




"Gustavo Larriera (MVP)"
escribió en el mensaje
news:
> SET DATEFIRST se establece en tiempo de ejecución y vale durante la
> sesión.
> Usalo para configurar el valor que deseas y consultalo usando
> @@DATEFIRST
>
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
>
>
> "Clara" wrote:
>
>> Hola,
>> Estoy usando SQL Server 2005
>>
>> Tengo algunas funciones escalares que devuelven el dia de la semana a
>> partir
>> de DatePart(weekDay, date)
>> Pero el resultado depende de como esté definido SET DATEFIRST.
>>
>> Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST
>> aunque
>> he leido que lo pued obtener a partir de @@DATEFIRST
>> Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
>> CREATE FUNCTION funcion
>>
>> SET DATEFIRST 1 --lunes
>>
>>
>>
>> SET DATEFIRST @@DATEFIRST
>> END
>>
>> porque no me queda claro si @@DATEFIRST depende de la configuracion
>> del
>> servidor ode la base de datos.
>> O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la
>> base de
>> datos?
>>
>> Grácias
>>
>>
>>
Respuesta Responder a este mensaje
#5 Federico A. Colli
11/07/2007 - 20:04 | Informe spam
Hola, y porque no haces que dicha función llame al SP?

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli
"Clara" escribió en el mensaje
news:
hola,

El problema es que estas funciones son llamadas por campos calculados.
Bueno. veré qué hago.

grácias


"Gustavo Larriera (MVP)"
escribió en el mensaje
news:
Usa un stored procedure.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Clara" wrote:

Hola,
Si hago algo asi:
CREATE FUNCTION funcion
@ID int
RETURNS int
AS
BEGIN

SET DATEFIRST 1


END

Me dá el error "Invalid use of side-effecting or time-dependent operator
in 'SET COMMAND' within a function"
No puedo usar el SET dentro, no? Como lo establezco?

grácias




"Gustavo Larriera (MVP)"
escribió en el mensaje
news:
> SET DATEFIRST se establece en tiempo de ejecución y vale durante la
> sesión.
> Usalo para configurar el valor que deseas y consultalo usando
> @@DATEFIRST
>
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
>
>
> "Clara" wrote:
>
>> Hola,
>> Estoy usando SQL Server 2005
>>
>> Tengo algunas funciones escalares que devuelven el dia de la semana a
>> partir
>> de DatePart(weekDay, date)
>> Pero el resultado depende de como esté definido SET DATEFIRST.
>>
>> Yo no sé a priori como tendrá el servidor definido el SET DATEFIRST
>> aunque
>> he leido que lo pued obtener a partir de @@DATEFIRST
>> Supongo que lo que debo hacer es en el cuerpo de la funcion algo asi
>> CREATE FUNCTION funcion
>>
>> SET DATEFIRST 1 --lunes
>>
>>
>>
>> SET DATEFIRST @@DATEFIRST
>> END
>>
>> porque no me queda claro si @@DATEFIRST depende de la configuracion
>> del
>> servidor ode la base de datos.
>> O puedo establecer de alguna forma solo una vez el @@DATEFIRST de la
>> base de
>> datos?
>>
>> Grácias
>>
>>
>>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida