使用 ColdFusion 将带毫秒的日期时间插入 MSSQL 数据库

Insert datetime with milliseconds into MSSQL database using ColdFusion

使用 ColdFusion (Lucee 4.5),我需要将包含毫秒的日期时间值插入到我的 MSSQL 数据库中。我正在创建这样的 UTC 日期时间值:

nowUTC = dateConvert("Local2UTC", now());
nowODBC = createODBCDateTime(nowUTC);

然后我使用下面的SQL代码插入:

insert into tbl (theTime) values (#nowODBC#)

但是,此方法不包括毫秒。插入数据库的值如下所示:

2015-10-26 02:14:07.000

最后 .(句点)后的最后 3 位数字是 MSSQL 的小数秒表示法 (1/300),它始终是 .000

如何包含毫秒或几分之一秒? 1/300 没问题。

目前我无法使用 Lucee 进行测试,但我怀疑问题不在于使用 cfqueryparam。 CF11下的结果是一样的。要插入日期和时间,包括 毫秒,请使用类型为 timestamp 的 cfqueryparam,而不是 createODBCDateTime:

<cfquery ....>
   INSERT INTO tbl (theTime) 
   VALUES 
   ( 
     <cfqueryparam value="#nowUTC#" cfsqltype="cf_sql_timestamp">
   )
</cfquery>

更新:

作为 ,cfscript 版本为 addParam()

query.addParam(name="theTime"
                , value=nowUTC
                , cfsqltype="cf_sql_timestamp"
              );

尝试将查询定向为使用本机 sql 服务器函数之一作为当前时间戳(包括毫秒),这将根据您 运行 的 MS SQL 版本而有所不同。参见 GETDATE (Transact-SQL) and GETUTCDATE (Transact-SQL)

您可能会发现这样的东西就是您想要的:

insert into tbl (theTime) values (GETUTCDATE())

示例:

GETUTCDATE() = 2015-10-27 20:10:02.047