在时间戳字段中插入日期时间变量
Posted
技术标签:
【中文标题】在时间戳字段中插入日期时间变量【英文标题】:insert a datetime variable in a timestamp field 【发布时间】:2014-05-05 13:37:04 【问题描述】:当我尝试在时间戳声明的 BigQuery 表字段中插入日期 (Now()) 时遇到问题。
我用 ColdFusion 语言编写代码。在这种语言中,函数 Now() 返回这种格式的日期时间:ts '2014-05-05 15:32:06'
这是我的 BigQuery 表架构:Name:string,Date:Timestamp
这是我试图插入一行的代码:
<cfset row.set("Name","Alex")>
<cfset row.set("Date", now())>
由于 Google BigQuery API 中的架构不支持时间戳以外的日期类型,我应该如何将 now() 函数(在 ColdFusion 中)给出的日期转换为能够插入我的行?
谢谢大家的回答, 如果我们必须传递一个字符串变量作为方法集的第二个参数,我们也可以这样写:
<cfset row.set('Date',mid("#now()#",6,19))>
检索一串 (yyyy-mm-dd HH:MM:SS)
【问题讨论】:
你不能直接发送 now() 作为查询参数吗? 我们也可以写那个方法有点脆。将日期对象转换为字符串的正确方法是使用date/timeFormat()
,如下所示。此外,与您的问题无关,但不需要 now()
周围的引号和 #
符号。
【参考方案1】:
您需要在 now() 上使用 DateFormat 函数才能使其工作。根据 bigquery doc,格式必须是 YYYY-MM-DD HH:MM:SS 所以你可以做类似
编辑
<cfset row.set("Date", DateFormat(now(),"YYYY-MM-DD")&' ' & TimeFormat(now(),"HH:MM:SS"))>
同样,正如我在评论中所说,您需要以预期的正确方式格式化您的日期/时间。
感谢 Leigh 指出 dateformat 未在单个掩码中显示日期和时间
【讨论】:
这可能不会导致错误,但DateFormat
不支持时间掩码。我没有查看 API,但如果您真的必须使用字符串,请查看 DateFormat/TimeFormat
的 CF9 或 DateTimeFormat
的 CF10。
Leigh,我也这么认为。但我在 CF9 中运行它并且它工作(支持时间掩码)。想法是 OP 需要使用适当的掩码来使日期与 BigQuery 兼容。
不,它只是似乎起作用。更仔细地查看返回的时间字符串。 时间值错误“hh:mm:ss”中的“mm”值实际上是月数,而不是分钟数。
尝试使用 mm 而不是 MM。
@N.N. - 如果你不熟悉它,CF 的DateFormat
掩码是不区分大小写的。所以mm
和MM
是等价的。 CF 9 及更早版本提供了一个单独的时间格式化函数,即TimeFormat
。对于 CF10+,您可以使用 nn
和 DateTimeFormat
几分钟。以上是关于在时间戳字段中插入日期时间变量的主要内容,如果未能解决你的问题,请参考以下文章