Problemas con fechas en SQL Server en ingles

Tengo una aplicación desarrollada en ASP que ataca a una BBDD SQL server en ingles (en un proveedor de Servicios).
Cuando introduzco una fecha en formato dd/mm/aaaa se guarda bien, pero al mostrarla en otra pantalla pasan dos cosas:
1) Si el día es inferior a 12 me cambia el día por el mes (si guardo 3/4/2002 me saca 4/3/2002)
2) En cambio si el día supera 12 no cambia nada! (si meto 14/2/2002 al recuperarlo me saca 14/2/2002)
He probado a guardar la fecha en formato canónigo (aaaa/mm/dd) pero me da un error al guardar los datos)
¿Puedes echarme una mano?, es muy urgente
Respuesta
1
Es fácil, tienes que asegurarte de enviar la fecha como cadena y realizar un procedimiento almacenado que se encargué de realizar el cambio usando la función CONVERT,
Por ejemplo:
select @fecha = CONVERT(datetime, '01/12/2003', 103)
Donde 103 es el formato de la fecha que deseas que se ingrese o presente, adjunto los formatos:
Without century (yy) With century (yyyy)
Standard
Input/Output**
- 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM)
1 101 USA mm/dd/yy
2 102 ANSI yy.mm.dd
3 103 British/French dd/mm/yy
4 104 German dd.mm.yy
5 105 Italian dd-mm-yy
6 106 - dd mon yy
7 107 - Mon dd, yy
8 108 - hh:mm:ss
- 9 or 109 (*) Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 USA mm-dd-yy
11 111 JAPAN yy/mm/dd
12 112 ISO yymmdd
- 13 or 113 (*) Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 or 120 (*) ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
- 21 or 121 (*) ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(no spaces)
- 130* Kuwaiti dd mon yyyy hh:mi:ss:mmmAM
- 131* Kuwaiti dd/mm/yy hh:mi:ss:mmmAM
Saludos,
Miguel Rivas Reyes
Lima - Perú

1 respuesta más de otro experto

Respuesta
1
Si, es todo un tema el problema con las fecahs ...
Yo uso mis propias funciones para mostrar las fechas
Y para guardar, las preparo en formato YYYYMMDD
o sea, el día de hoy seria 20030304
Tené en cuenta que tiene que ser 03 y no 3

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas