formato de fechas

29/10/2003 - 14:31 por Virginia | Informe spam
Hola a todos, no sé si es posible, en ese caso, si alguien
me puede ayudar a resolver mi problema: necesito modificar
el formato de las fechas en una base de datos y no sé cómo
se hace, busqué y no encontré nada.
En el caso de que se pueda, es a nivel base de datos o a
nivel del SQL Server (o sea, todas las bases que cree
quedarían con la misma configuración)?
Muchas gracias

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
29/10/2003 - 15:07 | Informe spam
¿A qué te refieres con "modificar el formato de fechas en una base de
datos" exactamente?. El servidor almacena los campos tipo fecha sin ningún
formato; de hecho, no es una fecha como lo almacena.

Otra cosa es el formateo que haces en el cliente (por ejemplo, si fuera
VB, con la función FORMAT), o bien si quieres mostrar el resultado de una
consulta en un formato concreto (para ello habría que usar CONVERT y
aplicarle un estilo)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Virginia" escribió en el mensaje
news:04f301c39e21$004272d0$
Hola a todos, no sé si es posible, en ese caso, si alguien
me puede ayudar a resolver mi problema: necesito modificar
el formato de las fechas en una base de datos y no sé cómo
se hace, busqué y no encontré nada.
En el caso de que se pueda, es a nivel base de datos o a
nivel del SQL Server (o sea, todas las bases que cree
quedarían con la misma configuración)?
Muchas gracias
Respuesta Responder a este mensaje
#2 Fernando G. Guerrero
29/10/2003 - 15:15 | Informe spam
SQL Server almacena las fechas siempre en un formato binario que es
independiente del formato de salida que seleccione el usuario. Este formato
binario es el conjunto de dos partes, una que representa la fecha (número de
días desde la fecha origen) y otra parte representa hora (número de ticks
desde medianoche).

Si se trata de un smalldatetime, la parte de fecha se almacena como el
número días que han pasado desde el 1 de Enero de 1900, si se trata de un
campo datetime, este valor sería negativo si se tratara de una fecha
anterior al 1 de Enero de 1900.

Si se trata de un smalldatetime, la parte de hora almacena el número de
minutos que han pasado desde la medianoche, mientras que si se trata de un
campo datetime, la parte de hora almacenará cuántos trescientosavos de
segundo han pasado desde la medianoche.

Si quieres ver cómo SQL Server almacena estos valores binarios, ejecuta el
siguiente script:

USE Tempdb
GO

CREATE TABLE Mifecha (Fecha datetime,
Fechita smalldatetime)

INSERT MiFecha
SELECT Getdate(), GetDate()

INSERT MiFecha
SELECT '1/1/1800', GetDate()

INSERT MiFecha
SELECT '1/1/1800 10:15', GetDate()

GO


SELECT *
FROM sysindexes
WHERE id = OBJECT_ID('MiFecha')


DBCC TRACEON(3604)

DBCC PAGE (Tempdb, 1, 75, 3)

/* verás que hay tres registros con los valores que has almacenado
En mi caso, he obtenido esto:

Slot 0 Offset 0x60

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786060: 00100010 00610fa5 00009421 94210161 ..a.!...a.!.
1A786070: 000002 ...
Fecha = Oct 29 2003 5:53AM
Fechita = Oct 29 2003 5:53AM

Slot 1 Offset 0x73

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786073: 00100010 00000000 ffff7154 94210167 Tq..g.!.
1A786083: 000002 ...
Fecha = Jan 1 1800 12:00AM
Fechita = Oct 29 2003 5:59AM

Slot 2 Offset 0x86

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786086: 00100010 00a8ea30 ffff7154 9421016e 0...Tq..n.!.
1A786096: 000002 ...
Fecha = Jan 1 1800 10:15AM
Fechita = Oct 29 2003 6:06AM

Si jugamos un poco con valores hexadecimales,

0x9421 = 37921 dias

*/

SELECT DATEADD(day, 37921, '1/1/1900')



SELECT DATEADD(day, -36524, '1/1/1900')







Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Virginia" wrote in message
news:04f301c39e21$004272d0$
Hola a todos, no sé si es posible, en ese caso, si alguien
me puede ayudar a resolver mi problema: necesito modificar
el formato de las fechas en una base de datos y no sé cómo
se hace, busqué y no encontré nada.
En el caso de que se pueda, es a nivel base de datos o a
nivel del SQL Server (o sea, todas las bases que cree
quedarían con la misma configuración)?
Muchas gracias
Respuesta Responder a este mensaje
#3 Virginia
29/10/2003 - 15:17 | Informe spam
Si, entiendo lo que me querés decir, pero el tema es que
yo le doy un formato desde una aplicacion en VB ("yyyy-mm-
dd hh:mm:ss.000"), y me da error. el unico formato que
toma es yyy-dd-mm hh:mm:ss.000 porque tengo el SQL Server
en inglés, pero sé que en castellano es distinto, y
necesito hacer algo genérico o bien poder identificar en
qué idioma está el motor al que estoy accediendo.
Gracias


¿A qué te refieres con "modificar el formato de


fechas en una base de
datos" exactamente?. El servidor almacena los campos tipo


fecha sin ningún
formato; de hecho, no es una fecha como lo almacena.

Otra cosa es el formateo que haces en el cliente (por


ejemplo, si fuera
VB, con la función FORMAT), o bien si quieres mostrar el


resultado de una
consulta en un formato concreto (para ello habría que


usar CONVERT y
aplicarle un estilo)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Virginia" escribió en el mensaje
news:04f301c39e21$004272d0$
Hola a todos, no sé si es posible, en ese caso, si alguien
me puede ayudar a resolver mi problema: necesito modificar
el formato de las fechas en una base de datos y no sé cómo
se hace, busqué y no encontré nada.
En el caso de que se pueda, es a nivel base de datos o a
nivel del SQL Server (o sea, todas las bases que cree
quedarían con la misma configuración)?
Muchas gracias


.

Respuesta Responder a este mensaje
#4 Carlos Sacristan
29/10/2003 - 15:32 | Informe spam
:-O

Wow, Fernando. El día que pregunten algo más complejo vas a tener que
anexar un manual en vez de un simple comentario ;-)

Siempre un placer leerte de nuevo por aquí



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Fernando G. Guerrero" escribió en el mensaje
news:
SQL Server almacena las fechas siempre en un formato binario que es
independiente del formato de salida que seleccione el usuario. Este


formato
binario es el conjunto de dos partes, una que representa la fecha (número


de
días desde la fecha origen) y otra parte representa hora (número de ticks
desde medianoche).

Si se trata de un smalldatetime, la parte de fecha se almacena como el
número días que han pasado desde el 1 de Enero de 1900, si se trata de un
campo datetime, este valor sería negativo si se tratara de una fecha
anterior al 1 de Enero de 1900.

Si se trata de un smalldatetime, la parte de hora almacena el número de
minutos que han pasado desde la medianoche, mientras que si se trata de un
campo datetime, la parte de hora almacenará cuántos trescientosavos de
segundo han pasado desde la medianoche.

Si quieres ver cómo SQL Server almacena estos valores binarios, ejecuta el
siguiente script:

USE Tempdb
GO

CREATE TABLE Mifecha (Fecha datetime,
Fechita smalldatetime)

INSERT MiFecha
SELECT Getdate(), GetDate()

INSERT MiFecha
SELECT '1/1/1800', GetDate()

INSERT MiFecha
SELECT '1/1/1800 10:15', GetDate()

GO


SELECT *
FROM sysindexes
WHERE id = OBJECT_ID('MiFecha')


DBCC TRACEON(3604)

DBCC PAGE (Tempdb, 1, 75, 3)

/* verás que hay tres registros con los valores que has almacenado
En mi caso, he obtenido esto:

Slot 0 Offset 0x60

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786060: 00100010 00610fa5 00009421 94210161 ..a.!...a.!.
1A786070: 000002 ...
Fecha = Oct 29 2003 5:53AM
Fechita = Oct 29 2003 5:53AM

Slot 1 Offset 0x73

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786073: 00100010 00000000 ffff7154 94210167 Tq..g.!.
1A786083: 000002 ...
Fecha = Jan 1 1800 12:00AM
Fechita = Oct 29 2003 5:59AM

Slot 2 Offset 0x86

Record Type = PRIMARY_RECORD
Record Attributes = NULL_BITMAP
1A786086: 00100010 00a8ea30 ffff7154 9421016e 0...Tq..n.!.
1A786096: 000002 ...
Fecha = Jan 1 1800 10:15AM
Fechita = Oct 29 2003 6:06AM

Si jugamos un poco con valores hexadecimales,

0x9421 = 37921 dias

*/

SELECT DATEADD(day, 37921, '1/1/1900')



SELECT DATEADD(day, -36524, '1/1/1900')







Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Virginia" wrote in message
news:04f301c39e21$004272d0$
Hola a todos, no sé si es posible, en ese caso, si alguien
me puede ayudar a resolver mi problema: necesito modificar
el formato de las fechas en una base de datos y no sé cómo
se hace, busqué y no encontré nada.
En el caso de que se pueda, es a nivel base de datos o a
nivel del SQL Server (o sea, todas las bases que cree
quedarían con la misma configuración)?
Muchas gracias


Respuesta Responder a este mensaje
#5 Fernando G. Guerrero
29/10/2003 - 15:32 | Informe spam
Es que son las 6 de la mañana en Los Angeles y me ha apetecido escribir un
poso ;-)

Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Carlos Sacristan" wrote in message
news:%

:-O

Wow, Fernando. El día que pregunten algo más complejo vas a tener que
anexar un manual en vez de un simple comentario ;-)

Siempre un placer leerte de nuevo por aquí



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Fernando G. Guerrero" escribió en el mensaje
news:
> SQL Server almacena las fechas siempre en un formato binario que es
> independiente del formato de salida que seleccione el usuario. Este
formato
> binario es el conjunto de dos partes, una que representa la fecha


(número
de
> días desde la fecha origen) y otra parte representa hora (número de


ticks
> desde medianoche).
>
> Si se trata de un smalldatetime, la parte de fecha se almacena como el
> número días que han pasado desde el 1 de Enero de 1900, si se trata de


un
> campo datetime, este valor sería negativo si se tratara de una fecha
> anterior al 1 de Enero de 1900.
>
> Si se trata de un smalldatetime, la parte de hora almacena el número de
> minutos que han pasado desde la medianoche, mientras que si se trata de


un
> campo datetime, la parte de hora almacenará cuántos trescientosavos de
> segundo han pasado desde la medianoche.
>
> Si quieres ver cómo SQL Server almacena estos valores binarios, ejecuta


el
> siguiente script:
>
> USE Tempdb
> GO
>
> CREATE TABLE Mifecha (Fecha datetime,
> Fechita smalldatetime)
>
> INSERT MiFecha
> SELECT Getdate(), GetDate()
>
> INSERT MiFecha
> SELECT '1/1/1800', GetDate()
>
> INSERT MiFecha
> SELECT '1/1/1800 10:15', GetDate()
>
> GO
>
>
> SELECT *
> FROM sysindexes
> WHERE id = OBJECT_ID('MiFecha')
>
>
> DBCC TRACEON(3604)
>
> DBCC PAGE (Tempdb, 1, 75, 3)
>
> /* verás que hay tres registros con los valores que has almacenado
> En mi caso, he obtenido esto:
>
> Slot 0 Offset 0x60
>
> Record Type = PRIMARY_RECORD
> Record Attributes = NULL_BITMAP
> 1A786060: 00100010 00610fa5 00009421 94210161 ..a.!...a.!.
> 1A786070: 000002 ...
> Fecha = Oct 29 2003 5:53AM
> Fechita = Oct 29 2003 5:53AM
>
> Slot 1 Offset 0x73
>
> Record Type = PRIMARY_RECORD
> Record Attributes = NULL_BITMAP
> 1A786073: 00100010 00000000 ffff7154 94210167 Tq..g.!.
> 1A786083: 000002 ...
> Fecha = Jan 1 1800 12:00AM
> Fechita = Oct 29 2003 5:59AM
>
> Slot 2 Offset 0x86
>
> Record Type = PRIMARY_RECORD
> Record Attributes = NULL_BITMAP
> 1A786086: 00100010 00a8ea30 ffff7154 9421016e 0...Tq..n.!.
> 1A786096: 000002 ...
> Fecha = Jan 1 1800 10:15AM
> Fechita = Oct 29 2003 6:06AM
>
> Si jugamos un poco con valores hexadecimales,
>
> 0x9421 = 37921 dias
>
> */
>
> SELECT DATEADD(day, 37921, '1/1/1900')
>
>
>
> SELECT DATEADD(day, -36524, '1/1/1900')
>
>
>
>
>
>
>
> Fernando G. Guerrero
> SQL Server MVP
> CEO & Principal Mentor
> Solid Quality Learning
> www.solidqualitylearning.com
>
> "Comparte lo que sabes, aprende lo que no sepas"
>
> "Virginia" wrote in message
> news:04f301c39e21$004272d0$
> Hola a todos, no sé si es posible, en ese caso, si alguien
> me puede ayudar a resolver mi problema: necesito modificar
> el formato de las fechas en una base de datos y no sé cómo
> se hace, busqué y no encontré nada.
> En el caso de que se pueda, es a nivel base de datos o a
> nivel del SQL Server (o sea, todas las bases que cree
> quedarían con la misma configuración)?
> Muchas gracias
>
>


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