4

使用 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很好。

4

2 回答 2

5

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

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

更新:

正如评论中提到的 Redtopia ,cfscript 版本将是addParam()

query.addParam(name="theTime"
                , value=nowUTC
                , cfsqltype="cf_sql_timestamp"
              );
于 2015-10-26T23:41:04.847 回答
4

尝试引导查询使用本机 sql 服务器函数之一来获取当前时间戳(包括毫秒),这将取决于您正在运行的 MS SQL 版本。请参阅GETDATE (Transact-SQL)GETUTCDATE (Transact-SQL)

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

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

例子:

GETUTCDATE() = 2015-10-27 20:10:02.047
于 2015-10-27T00:09:50.133 回答