使用自定义格式更新时间戳 (dd/MM/yyyy HH:MM:ss.FFFFFFF)

Updating timestamp with custom format (dd/MM/yyyy HH:MM:ss.FFFFFFF)

如何编写一条语句,以 dd/MM/yyyy HH:MM:ss.FFFFFFF 格式更新数据库中的日期字段。

我有 select 查询 return 需要的字符串

SELECT FORMAT(CURRENT_TIMESTAMP, 'dd/MM/yyyy HH:MM:ss.FFFFFFF')

我试过

update ORDER 
set timedate=FORMAT(CURRENT_TIMESTAMP, 'dd/MM/yyyy HH:MM:ss.FFFFFFF') 
WHERE ID='288'

但是 return 错误 :

SQL Error [8152] [22001]: String or binary data would be truncated. com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.

我的字段数据类型是 varchar 27

CREATE TABLE AYAM.dbo.ORDER (
ID int NOT NULL IDENTITY(1,1),
TIMEDATE varchar(27) NOT NULL,
CONSTRAINT PK_ORDER_DATA PRIMARY KEY (ID,TIMEDATE)
) GO;

我正在使用 MSSQL 2016

当 CURRENT_TIMESTAMP 函数 returns 只有 3 个小数时,为什么你要求 FFFFFFF?使用 SYSDATETIME() 函数以获得更好的精度。

我无法重现错误。 SQL 您使用什么服务器版本?

create table #test (timedate varchar(27))
insert into #test VALUES ('test');
update #test 
set timedate=FORMAT(SYSDATETIME(), 'dd/MM/yyyy HH:MM:ss.FFFFFFF') 
select * from #test
drop table #test

输出为:18/09/2017 12:09:44.6914345

更新: 使用您的 table 结构完成了相同的测试。没有错误...

INSERT INTO dbo.[ORDER] (TIMEDATE) VALUES ('test')
GO 300


update [ORDER] 
set timedate=FORMAT(CURRENT_TIMESTAMP, 'dd/MM/yyyy HH:MM:ss.FFFFFFF') 
WHERE ID='288'