Al fin después de mucho luchar ya dimos con el arreglo de esta incógnita que muchos lectores de nuestro sitio web han tenido. Si tienes algo más que compartir puedes dejar tu información.
Solución:
Simplemente declare un valor predeterminado para un campo:
CREATE TABLE MyTable(
ID INTEGER PRIMARY KEY,
Name TEXT,
Other STUFF,
Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
Sin embargo, si su INSERT
El comando establece explícitamente este campo en NULL
se establecerá en NULL
.
Puede crear un campo TIMESTAMP en la tabla en SQLite, vea esto:
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name VARCHAR(64),
sqltime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO my_table(name, sqltime) VALUES('test1', '2010-05-28T15:36:56.200');
INSERT INTO my_table(name, sqltime) VALUES('test2', '2010-08-28T13:40:02.200');
INSERT INTO my_table(name) VALUES('test3');
Este es el resultado:
SELECT * FROM my_table;
Al leer datefunc, un ejemplo práctico de finalización automática de fecha y hora sería:
sqlite> CREATE TABLE 'test' (
...> 'id' INTEGER PRIMARY KEY,
...> 'dt1' DATETIME NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP, 'localtime')),
...> 'dt2' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime')),
...> 'dt3' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime'))
...> );
Insertemos algunas filas de una manera que inicie la finalización automática de fecha y hora:
sqlite> INSERT INTO 'test' ('id') VALUES (null);
sqlite> INSERT INTO 'test' ('id') VALUES (null);
Los datos almacenados muestran claramente que los dos primeros son iguales pero no la tercera función:
sqlite> SELECT * FROM 'test';
1|2017-09-26 09:10:08|2017-09-26 09:10:08|2017-09-26 09:10:08.053
2|2017-09-26 09:10:56|2017-09-26 09:10:56|2017-09-26 09:10:56.894
¡Preste atención a que las funciones de SQLite están entre paréntesis! ¿Qué tan difícil fue mostrarlo en un ejemplo?
¡Que te diviertas!
Puedes defender nuestro ensayo escribiendo un comentario o puntuándolo te damos las gracias.