如何编写一个语句,用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
答案 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'