使用ColdFusion(Lucee 4.5),我需要将包含毫秒的日期时间值插入到MSSQL数据库中。我正在创建这样的UTC日期时间值:
nowUTC = dateConvert("Local2UTC", now());
nowODBC = createODBCDateTime(nowUTC);
然后我使用以下SQL代码插入:
insert into tbl (theTime) values (#nowODBC#)
但是,此方法不包括毫秒。插入到db中的值如下所示:
2015-10-26 02:14:07.000
最后.
(句号)之后的最后3位是MSSQL的第二种表示法(1/300)的一小部分,总是.000
如何包含毫秒或几分之一秒? 1/300
没问题。
答案 0 :(得分:5)
我目前无法与Lucee一起测试,但我怀疑问题是没有使用cfqueryparam
。 CF11下的结果相同。要插入日期和时间,包括毫秒,请使用cfqueryparam,类型为 timestamp ,而不是createODBCDateTime:
<cfquery ....>
INSERT INTO tbl (theTime)
VALUES
(
<cfqueryparam value="#nowUTC#" cfsqltype="cf_sql_timestamp">
)
</cfquery>
<强>更新强>
作为Redtopia mentioned in the comments,cfscript版本为addParam()
:
query.addParam(name="theTime"
, value=nowUTC
, cfsqltype="cf_sql_timestamp"
);
答案 1 :(得分:4)
尝试指示查询使用其中一个本机sql server函数来获取当前时间戳(包括毫秒),这取决于您运行的MS SQL版本。请参阅documentation和GETDATE (Transact-SQL)
你可能会发现你想要的东西:
insert into tbl (theTime) values (GETUTCDATE())
示例:
GETUTCDATE() = 2015-10-27 20:10:02.047