Agregue el valor predeterminado del campo datetime en SQL Server a una marca de tiempo

Tengo una tabla que recostack formularios enviados desde nuestro sitio web, pero por alguna razón, cuando crearon la tabla, no pusieron una marca de tiempo en la tabla. Quiero que ingrese la fecha y hora exactas en que se ingresó el registro.

Sé que está ahí en alguna parte, pero parece que no puedo encontrar cómo establecer el valor predeterminado (como en Access, usas getNow() o Now() ) pero no sé dónde ponerlo.

Para modificar una columna existente en una tabla existente:

 ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn 

Esto también se puede hacer a través de la GUI de SSMS.

  1. Coloque su tabla en la vista de diseño (haga clic con el botón derecho en la tabla en el explorador de objetos-> Diseño )
  2. Agregue una columna a la tabla (o haga clic en la columna que desea actualizar si ya existe)
  3. En Propiedades de columna, ingrese (getdate()) en el valor predeterminado o campo de enlace como se muestra a continuación.

enter image description here

En esa tabla en SQL Server, especifique el valor predeterminado de esa columna para que sea CURRENT_TIMESTAMP . DataType de esa columna puede ser datetime o datetime2.

p.ej

 Create Table Student ( Name varchar(50), DateOfAddmission datetime default CURRENT_TIMESTAMP ); 

Espero que funcione.

No permitir valores nulos en la columna y establecer un valor predeterminado en la columna de getdate()

 /*Deal with any existing NULLs*/ UPDATE YourTable SET created_date=GETDATE() /*Or some sentinel value '19000101' maybe?*/ /*Disallow NULLs*/ ALTER TABLE YourTable ALTER COLUMN created_date DATE NOT NULL /*Add default constraint*/ ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable_created_date DEFAULT GETDATE() FOR created_date 

Si bien la respuesta marcada es correcta con:

ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn

Siempre debe tener en cuenta las zonas horarias al agregar valores predeterminados de fecha y hora en una columna.

Digamos, por ejemplo, que este valor de datetime y datetime está diseñado para indicar cuándo un miembro se unió a un sitio web y desea que se muestre al usuario, GETDATE() le dará la hora del servidor para que pueda mostrar discrepancias si el usuario está en otra configuración al servidor.

Si espera tratar con usuarios internacionales, en algunos casos es mejor usar GETUTCDATE () , que:

Devuelve la marca de tiempo del sistema de base de datos actual como un valor de fecha y hora. La compensación de zona horaria de la base de datos no está incluida. Este valor representa la hora UTC actual (Tiempo Universal Coordinado). Este valor se deriva del sistema operativo de la computadora en la que se está ejecutando la instancia de SQL Server.

 ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETUTCDATE() FOR YourColumn 

Al recuperar los valores, la aplicación / sitio web frontal debe transformar este valor de la hora UTC a la configuración regional / cultura del usuario que lo solicita.

La syntax para esto al crear una nueva tabla es:

 CREATE TABLE MyTable ( MYTableID INT IDENTITY(1,1), CreateDate DATETIME NOT NULL CONSTRAINT DF_MyTable_CreateDate_GETDATE DEFAULT GETDATE() ) 

Esto funciona para mí …

 ALTER TABLE `accounts` ADD `user_registered` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ; 

Para que sea más fácil de seguir, resumiré las respuestas anteriores:

Digamos que la tabla se llama Cutomer tiene 4 columnas / menos o más …

desea agregar una nueva columna a la tabla donde cada vez que hay inserción … entonces esa columna mantiene un registro de la hora en que ocurrió el evento.

Solución:

agregue una nueva columna, digamos que timePurchase es la nueva columna, en la tabla con el tipo de datos datetime .

Luego ejecuta la siguiente modificación:

 ALTER TABLE Customer ADD CONSTRAINT DF_Customer DEFAULT GETDATE() FOR timePurchase 

Esto también funciona:

 CREATE TABLE Example( ... created datetime default GETDATE() ); 

O:

 ALTER TABLE EXAMPLE ADD created datetime default GETDATE(); 

Supongamos que crea una tabla de base de datos para un sistema de registro.

 IF OBJECT_ID('dbo.registration_demo', 'U') IS NOT NULL DROP TABLE dbo.registration_demo; CREATE TABLE dbo.registration_demo ( id INT IDENTITY PRIMARY KEY, name NVARCHAR(8) ); 

Ahora un par de personas se registran.

 INSERT INTO dbo.registration_demo (name) VALUES ('John'),('Jane'),('Jeff'); 

Entonces te das cuenta de que necesitas una marca de tiempo para cuando se registraron.

Si esta aplicación está limitada a una región geográficamente localizada, entonces puede usar la hora del servidor local con GETDATE() . De lo contrario, debe prestar atención a la consideración de Tanner para la audiencia global con GETUTCDATE() para el valor predeterminado.

Agregue la columna con un valor predeterminado en una statement como esta respuesta .

 ALTER TABLE dbo.registration_demo ADD time_registered DATETIME DEFAULT GETUTCDATE(); 

Consigamos otro registrante y veamos cómo son los datos.

 INSERT INTO dbo.registration_demo (name) VALUES ('Julia'); SELECT * FROM dbo.registration_demo; 
 id name time_registered 1 John NULL 2 Jane NULL 3 Jeff NULL 4 Julia 2016-06-21 14:32:57.767 

Esto funcionó para mí. Estoy usando SQL Developer con Oracle DB:

 ALTER TABLE YOUR_TABLE ADD Date_Created TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;