Saltar al contenido

Cómo convertir la columna de marca de tiempo de SQL Server al formato de fecha y hora

Si encuentras alguna parte que no entiendes puedes dejarlo en los comentarios y te responderemos lo más rápido posible.

Solución:

Servidor SQL TIMESTAMP el tipo de datos tiene nada que ver con una fecha y hora!

Es solo una representación hexadecimal de un entero de 8 bytes consecutivos; solo es bueno para asegurarse de que una fila no haya cambiado desde que se leyó.

Puede leer el entero hexadecimal o si desea un BIGINT. Como ejemplo:

SELECT CAST (0x0000000017E30D64 AS BIGINT)

El resultado es

400756068

En las versiones más recientes de SQL Server, se llama RowVersion – ya que eso es realmente lo que es. Consulte los documentos de MSDN en ROWVERSION:

Es un tipo de datos que expone números binarios únicos generados automáticamente dentro de una base de datos. rowversion generalmente se usa como un mecanismo para marcar filas de tabla de versiones. El tipo de datos de la versión de fila es solo un número incremental y no conserva una fecha o una hora. Para registrar una fecha o una hora, utilice un tipo de datos datetime2.

Vos tambien no poder convertir un servidor SQL TIMESTAMP a una fecha/hora – simplemente no es una fecha/hora.

Pero si estás diciendo marca de tiempo, pero en realidad te refieres a una DATETIME columna: puede usar cualquiera de los formatos de fecha válidos descritos en el tema CAST y CONVERT en la ayuda de MSDN. Estos están definidos y admitidos “listos para usar” por SQL Server. Cualquier otra cosa no es compatible, por ejemplo, tiene que hacer muchas conversiones y concatenaciones manuales (no recomendado).

El formato que está buscando se parece un poco al ODBC canónico (estilo = 121):

DECLARE @today DATETIME = SYSDATETIME()

SELECT CONVERT(VARCHAR(50), @today, 121)

da:

2011-11-14 10:29:00.470

SQL Server 2012 finalmente tendrá un FORMAT función para hacer formato personalizado ……

Usando cast puede obtener la fecha de un campo de marca de tiempo:

SELECT CAST(timestamp_field AS DATE) FROM tbl_name

Mis compañeros de trabajo me ayudaron con esto:

select CONVERT(VARCHAR(10), , 112), count(*)
from table where  > '2012-09-10'
group by CONVERT(VARCHAR(10), , 112);

o

select CONVERT(DATE, , 112), count(*)
from table where  > '2012-09-10'
group by CONVERT(DATE, , 112);

Al final de la artículo puedes encontrar las notas de otros creadores, tú todavía tienes la opción de insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *