使用 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
使用 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>
更新:
作为 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