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

时间:2015-10-26 20:05:20

标签: sql-server datetime coldfusion odbc lucee

使用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没问题。

2 个答案:

答案 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版本。请参阅documentationGETDATE (Transact-SQL)

你可能会发现你想要的东西:

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

示例:

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