Tengo una tabla donde cada fila necesita una marca de tiempo marcando el tiempo que se ha insertado. No tengo mucha experiencia con la base de datos, pero algo me dice que esto mejor sería manejado automáticamente en el lado de la base de datos, por ejemplo, a través de un procedimiento almacenado.¿Cómo puedo almacenar/recuperar una marca de tiempo en SQL Server?
Hay un tipo de datos de marca de tiempo en MS SQL, pero al leer sobre él, se trata como una serie de números y no como un objeto DateTime en C#. Entonces, ¿no podría ser simplemente un tipo de datos NVARCHAR si de todos modos tengo que hacer la conversión?
En pocas palabras, ¿cuál es la forma más fácil de (automáticamente?) Poner una marca de tiempo en una fila cuando se inserta en una tabla?
Editar: la definición de tabla es muy simple. Solo tiene dos columnas en este momento y todavía carece de la columna de marca de tiempo.
SqlCommand command = con.CreateCommand();
command.CommandText = "INSERT INTO Bio VALUES (" +
"@ID, @Name)";
command.Parameters.AddWithValue("ID",number);
command.Parameters.AddWithValue("Name", name);
try
{
SqlDataReader thisReader = command.ExecuteReader();
thisReader.Close();
}
catch { // Do something };
Solución bien, funciona ahora. Primero intenté agregar la nueva columna a través de la ventana Server Explorer en Visual Studio 2008. Al encontrar mi base de datos, haga clic con el botón derecho y seleccione "Nueva consulta". Entonces, al escribir algo así como
ALTER TABLE dbo.MyTable ADD CreatedDate datetime NOT NULL DEFAULT (GetUtcDate())
pero me dio el mensaje de que
La construcción ALTER TABLE de SQL no es compatible La consulta no se puede representar gráficamente en el panel Diagrama y Criterios.
Así que, en cambio, lo agregué gráficamente. Primero, "Definición de tabla abierta" y agregando CreatedDate en Nombre de columna y fecha y hora en Tipo de datos. Eliminando la verificación Permitir nulos. Luego, en las Propiedades de la columna añadí
getutcdate()
en la sección general en la fila denominada "Valor por omisión o unión". Cada vez que se inserta una nueva fila, la base de datos le da automáticamente la fecha y hora actual como una marca de tiempo.
Intenté utilizar esta línea de comando, pero encontré que el editor gráfico era más fácil. Lo que hice se agrega al final de la pregunta original. Gracias por la ayuda. –
Sé que esta es una pregunta muy antigua, ¡pero una respuesta fantástica! – Tom