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

时间:2017-09-18 08:41:23

标签: sql sql-server database rdbms

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

我有选择返回require字符串的查询

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'

但是返回错误:

  

SQL错误[8152] [22001]:字符串或二进制数据将被截断。    com.microsoft.sqlserver.jdbc.SQLServerException:字符串或二进制数据   被截断。

我的字段数据类型是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

1 个答案:

答案 0 :(得分:1)

当CURRENT_TIMESTAMP函数只返回3个十进制数时,为什么要求FFFFFFF?使用SYSDATETIME()函数可以获得更好的精度。

我无法重新产生错误。你使用什么SQL Server版本?

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

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

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'