Problema con Fechas

10/07/2006 - 16:40 por Mercedes | Informe spam
Buenos Dias:

Tengo la siguiente situacion en mi server, mi configuracion regional es
México, pero al hacer una consulta como esta en SQL seleccionado (dd/mm/aaaa)
y el campo es smalldatetime:

SELECT FMOV, SUM(IMP)
FROM TABLA
WHERE AND (DWF001FMOV>='01/07/2006' AND DWF001FMOV<='10/07/2006')

Al parecer me toma el día como mes y este es el resultado de la consulta:

08/01/2006-1540046.5
09/01/2006-1381505
10/01/2006-1228037.5
11/01/2006-1118318.5
12/01/2006-1073032
13/01/2006-1453563.46
14/01/2006-1623163
15/01/2006-1418151

¿Que puedo hacer?
De antemano, gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
10/07/2006 - 17:10 | Informe spam
Mercedes,

Para evitar esta confusion, usa el formato de los estilos 112 y/o 126 que
aperecen en la descripcion de la funcion "convert". De esta forma SQL Server
interpretara correctamente los valores de fecha sin importar el setting de
"dateformat" o del lenguaje en uso.

112 - Para fecha sin tiempo yyyymmdd
126 - Para fecha y tiempo yyyy-mm-ddThh:mm:ss.mmm

SELECT FMOV, SUM(IMP)
FROM TABLA
WHERE (DWF001FMOV>='20060701' AND DWF001FMOV<='20060710')
go

Ejemplo:

set dateformat dmy
go

select cast('20060701'as datetime)
go

set dateformat mdy
go

select cast('20060701'as datetime)
go

set dateformat ymd
go

select cast('20060701'as datetime)
go

set language spanish
go

select cast('20060701'as datetime)
go

set language us_english
go

select cast('20060701'as datetime)
go

set language Italiano
go

select cast('20060701'as datetime)
go


Como ves, el resultado es el mismo en todos los casos.


AMB


"Mercedes" wrote:

Buenos Dias:

Tengo la siguiente situacion en mi server, mi configuracion regional es
México, pero al hacer una consulta como esta en SQL seleccionado (dd/mm/aaaa)
y el campo es smalldatetime:

SELECT FMOV, SUM(IMP)
FROM TABLA
WHERE AND (DWF001FMOV>='01/07/2006' AND DWF001FMOV<='10/07/2006')

Al parecer me toma el día como mes y este es el resultado de la consulta:

08/01/2006-1540046.5
09/01/2006-1381505
10/01/2006-1228037.5
11/01/2006-1118318.5
12/01/2006-1073032
13/01/2006-1453563.46
14/01/2006-1623163
15/01/2006-1418151

¿Que puedo hacer?
De antemano, gracias.
Respuesta Responder a este mensaje
#2 Mercedes
10/07/2006 - 18:57 | Informe spam
No se tendra algo en la configuracion del SQL o del equipo para que deje fija
esta propiedad
SET DATEFORMAT dmy

ya que en un servidor que tenia anteriormente no necesitaba esto, pero
cambie mi programa a un nuevo servidor y no me respeta esta propiedad y con
lo que me estas proponiendo tendría que modificar todo mi desarrollo
(consultas) y son varias.

Gracias

"Alejandro Mesa" escribió:

Mercedes,

Para evitar esta confusion, usa el formato de los estilos 112 y/o 126 que
aperecen en la descripcion de la funcion "convert". De esta forma SQL Server
interpretara correctamente los valores de fecha sin importar el setting de
"dateformat" o del lenguaje en uso.

112 - Para fecha sin tiempo yyyymmdd
126 - Para fecha y tiempo yyyy-mm-ddThh:mm:ss.mmm

SELECT FMOV, SUM(IMP)
FROM TABLA
WHERE (DWF001FMOV>='20060701' AND DWF001FMOV<='20060710')
go

Ejemplo:

set dateformat dmy
go

select cast('20060701'as datetime)
go

set dateformat mdy
go

select cast('20060701'as datetime)
go

set dateformat ymd
go

select cast('20060701'as datetime)
go

set language spanish
go

select cast('20060701'as datetime)
go

set language us_english
go

select cast('20060701'as datetime)
go

set language Italiano
go

select cast('20060701'as datetime)
go


Como ves, el resultado es el mismo en todos los casos.


AMB


"Mercedes" wrote:

> Buenos Dias:
>
> Tengo la siguiente situacion en mi server, mi configuracion regional es
> México, pero al hacer una consulta como esta en SQL seleccionado (dd/mm/aaaa)
> y el campo es smalldatetime:
>
> SELECT FMOV, SUM(IMP)
> FROM TABLA
> WHERE AND (DWF001FMOV>='01/07/2006' AND DWF001FMOV<='10/07/2006')
>
> Al parecer me toma el día como mes y este es el resultado de la consulta:
>
> 08/01/2006-1540046.5
> 09/01/2006-1381505
> 10/01/2006-1228037.5
> 11/01/2006-1118318.5
> 12/01/2006-1073032
> 13/01/2006-1453563.46
> 14/01/2006-1623163
> 15/01/2006-1418151
>
> ¿Que puedo hacer?
> De antemano, gracias.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
10/07/2006 - 20:51 | Informe spam
Mercedes,

No se tendra algo en la configuracion del SQL o del equipo para que deje fija
esta propiedad
SET DATEFORMAT dmy



No, tendrias que reinstalar sql server o setear este valor en cada conexion
al server o dentro de los sps.


AMB


"Mercedes" wrote:

No se tendra algo en la configuracion del SQL o del equipo para que deje fija
esta propiedad
SET DATEFORMAT dmy

ya que en un servidor que tenia anteriormente no necesitaba esto, pero
cambie mi programa a un nuevo servidor y no me respeta esta propiedad y con
lo que me estas proponiendo tendría que modificar todo mi desarrollo
(consultas) y son varias.

Gracias

"Alejandro Mesa" escribió:

> Mercedes,
>
> Para evitar esta confusion, usa el formato de los estilos 112 y/o 126 que
> aperecen en la descripcion de la funcion "convert". De esta forma SQL Server
> interpretara correctamente los valores de fecha sin importar el setting de
> "dateformat" o del lenguaje en uso.
>
> 112 - Para fecha sin tiempo yyyymmdd
> 126 - Para fecha y tiempo yyyy-mm-ddThh:mm:ss.mmm
>
> SELECT FMOV, SUM(IMP)
> FROM TABLA
> WHERE (DWF001FMOV>='20060701' AND DWF001FMOV<='20060710')
> go
>
> Ejemplo:
>
> set dateformat dmy
> go
>
> select cast('20060701'as datetime)
> go
>
> set dateformat mdy
> go
>
> select cast('20060701'as datetime)
> go
>
> set dateformat ymd
> go
>
> select cast('20060701'as datetime)
> go
>
> set language spanish
> go
>
> select cast('20060701'as datetime)
> go
>
> set language us_english
> go
>
> select cast('20060701'as datetime)
> go
>
> set language Italiano
> go
>
> select cast('20060701'as datetime)
> go
>
>
> Como ves, el resultado es el mismo en todos los casos.
>
>
> AMB
>
>
> "Mercedes" wrote:
>
> > Buenos Dias:
> >
> > Tengo la siguiente situacion en mi server, mi configuracion regional es
> > México, pero al hacer una consulta como esta en SQL seleccionado (dd/mm/aaaa)
> > y el campo es smalldatetime:
> >
> > SELECT FMOV, SUM(IMP)
> > FROM TABLA
> > WHERE AND (DWF001FMOV>='01/07/2006' AND DWF001FMOV<='10/07/2006')
> >
> > Al parecer me toma el día como mes y este es el resultado de la consulta:
> >
> > 08/01/2006-1540046.5
> > 09/01/2006-1381505
> > 10/01/2006-1228037.5
> > 11/01/2006-1118318.5
> > 12/01/2006-1073032
> > 13/01/2006-1453563.46
> > 14/01/2006-1623163
> > 15/01/2006-1418151
> >
> > ¿Que puedo hacer?
> > De antemano, gracias.
Respuesta Responder a este mensaje
#4 Maxi
11/07/2006 - 22:03 | Informe spam
Mercedes, para que las fechas funcionen bien deberias siempre usarlas en
formato ANSI, te copio el link de un articulo donde se explica este tema

http://www.microsoft.com/spanish/ms...art157.asp


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mercedes" escribió en el mensaje
news:
No se tendra algo en la configuracion del SQL o del equipo para que deje
fija
esta propiedad
SET DATEFORMAT dmy

ya que en un servidor que tenia anteriormente no necesitaba esto, pero
cambie mi programa a un nuevo servidor y no me respeta esta propiedad y
con
lo que me estas proponiendo tendría que modificar todo mi desarrollo
(consultas) y son varias.

Gracias

"Alejandro Mesa" escribió:

Mercedes,

Para evitar esta confusion, usa el formato de los estilos 112 y/o 126 que
aperecen en la descripcion de la funcion "convert". De esta forma SQL
Server
interpretara correctamente los valores de fecha sin importar el setting
de
"dateformat" o del lenguaje en uso.

112 - Para fecha sin tiempo yyyymmdd
126 - Para fecha y tiempo yyyy-mm-ddThh:mm:ss.mmm

SELECT FMOV, SUM(IMP)
FROM TABLA
WHERE (DWF001FMOV>='20060701' AND DWF001FMOV<='20060710')
go

Ejemplo:

set dateformat dmy
go

select cast('20060701'as datetime)
go

set dateformat mdy
go

select cast('20060701'as datetime)
go

set dateformat ymd
go

select cast('20060701'as datetime)
go

set language spanish
go

select cast('20060701'as datetime)
go

set language us_english
go

select cast('20060701'as datetime)
go

set language Italiano
go

select cast('20060701'as datetime)
go


Como ves, el resultado es el mismo en todos los casos.


AMB


"Mercedes" wrote:

> Buenos Dias:
>
> Tengo la siguiente situacion en mi server, mi configuracion regional es
> México, pero al hacer una consulta como esta en SQL seleccionado
> (dd/mm/aaaa)
> y el campo es smalldatetime:
>
> SELECT FMOV, SUM(IMP)
> FROM TABLA
> WHERE AND (DWF001FMOV>='01/07/2006' AND DWF001FMOV<='10/07/2006')
>
> Al parecer me toma el día como mes y este es el resultado de la
> consulta:
>
> 08/01/2006-1540046.5
> 09/01/2006-1381505
> 10/01/2006-1228037.5
> 11/01/2006-1118318.5
> 12/01/2006-1073032
> 13/01/2006-1453563.46
> 14/01/2006-1623163
> 15/01/2006-1418151
>
> ¿Que puedo hacer?
> De antemano, gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida