在时间戳字段中插入日期时间变量

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 掩码是不区分大小写的。所以mmMM 是等价的。 CF 9 及更早版本提供了一个单独的时间格式化函数,即TimeFormat。对于 CF10+,您可以使用 nnDateTimeFormat 几分钟。

以上是关于在时间戳字段中插入日期时间变量的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 5.7 时间戳字段显示日期时间?

mysql 日期和时间问题 求助

postgres时间戳从bigint数据类型中提取日期

SQL Server 默认日期时间戳?

如何在时间戳字段中仅使用日期来选择记录?

如何将带时区的日期时间插入 SQLite?