我在创建使用CURRENT_TIMESTAMP
指定日期的表时遇到了一些问题。我需要这个,因为我使用java jpa实体来按日期检索它们。如果我运行到本地h2数据库,我没有问题。SQL命令中的TIMESTAMP和CURRENT_TIMESTAMP问题
在这个例子中:
INSERT INTO Post (id, title, slug, teaser, body, author_id, posted_on)
VALUES (1, 'Spring Boot Rocks!', 'spring-boot-rocks', @TEASER, @BODY, 1, CURRENT_TIMESTAMP);
一切都被创建和完美的作品,但是当我尝试在我连接了Azure的SQL数据库一样查询到我的错误
Failed to execute query. Error: Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.
如果我尝试将CURRENT_TIMESTAMP
更改为TIMESTAMP
,我会得到;
Failed to execute query. Error: Invalid column name 'TIMESTAMP'. If I change it to DEFAULT as the previous error suggests the tables get created but I can't retrieve them by date of creation since DEFAULT is not a time value.
完整的查询
SET IDENTITY_INSERT author ON
insert into author(id,first_name,last_name,email) values (1,'Dan','Vega','[email protected]');
insert into author(id,first_name,last_name,email) values (2,'John','Smith','[email protected]');
SET IDENTITY_INSERT author OFF
SET IDENTITY_INSERT post ON
DECLARE @TEASER varchar(4000) = 'text...'
DECLARE @BODY varchar(4000) = 'text...'
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (1,'Spring Boot Rocks!','spring-boot-rocks',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (2,'Spring Data Rocks!','spring-data-rocks',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (3,'John Blog Post 1','john-blog-post-1',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (4,'John Blog Post 2','john-blog-post-2',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (5,'John Blog Post 3','john-blog-post-3',@TEASER,@BODY,2,CURRENT_TIMESTAMP);
insert into Post(id,title,slug,teaser,body,author_id,posted_on) values (6,'Refactoring our Spring Data Project','refactoring-spring-data-project',@TEASER,@BODY,1,CURRENT_TIMESTAMP);
SET IDENTITY_INSERT post OFF
如果我取代'和'DATE'我有CURRENT_TIMESTAMP' '无法执行查询。错误:无效的列名'DATE'。' – MrSir
@MrSir:您不必用任何东西来替换'CURRENT_TIMESTAMP' - 您需要**更改**表中'posting_on'列的数据类型** ** (从'TIMESTAMP'到例如'DATETIME2(0)')你将数据插入! –
我试图改变它与查询'ALTER TABLE后 ALTER COLUMN posted_on DATETIME2(0); '我有'不能更改列'posted_on',因为它是时间戳。' – MrSir