从MySQL日期时间转换为ColdFusion日期时间

3

有没有简单的方法将mysql datetime值转换为CF8(可能还要向后兼容CF6)的coldfusion datetime值?

我需要在mysql中存储日期时间,并选择以mysql datetime格式存储它们,这样我可以让数据库为我执行日期范围和比较。我可以在CF中完成这些操作,但我必须检索潜在的大结果集进行处理。似乎让数据库处理这个问题更加明智。

我的前端代码是coldfusion,将cf日期时间对象转换为mysql可以理解的内容很容易。但我在将其带回来时遇到了麻烦。

有CreateDateTime函数,但我首先必须将mysql结果分成单独的年份,月份,日期等部分。这并不难,但与另一方向上的日期转换相比,似乎过于复杂。

ParseDateTime函数对我也无济于事,因为我想在服务器端对datetime对象进行进一步处理,然后进行格式化并发送给客户端。

有人知道一个简单的方法吗?还是我必须接受一种简单的转换方式和另一种笨拙的方式?


如果值存储在日期时间列中,则在查询时应自动将其转换为CF日期时间对象。我可能漏掉了什么.. ;) - Leigh
1
好的。现在有点尴尬了。我不知道CF正在为我执行自动转换。我从来没有尝试过。我以为我必须自己做。所以今天我学到了两件事情。 - nedlud
每当你有那些“灵光一闪”的时刻,都是美好的一天! - Leigh
2个回答

3

date_format 函数非常适合这种情况:

date_format(myDateCol, '%m/%d/%Y')

此外,如果需要进行日期计算,date_format 可以作为您的包装器:
date_format(date_add(myDateCol, interval 7 day), '%m/%d/%Y')

那将把一周后(+7天)的日期格式化为ColdFusion格式。

谢谢你。这正是我所需要的。我不知道我可以让mysql为我做格式化(还有很多要学)。现在我是一个更快乐的人了。 - nedlud
很高兴能帮上忙!MySQL和SQL通常有很多功能强大的东西经常被忽视。值得花一两天时间深入研究文档,找出你不知道的东西! - Eric
好的,不再多说 ;).. 但我认为OP想要一个日期时间对象?文档说date_format函数返回一个字符串。 - Leigh
@Leigh:OP已经评论说他得到了“正好需要的东西”,并将其标记为答案。你为什么说这不是OP所需的?就MySQL而言,date_format返回一个字符串,但对于ColdFusion来说,数据就是数据,它会按照自己的方式进行解释。返回列的MySQL数据类型几乎没有任何影响CF如何处理它。 - Eric
1
@Eric - 他们问如何“将mysql_datetime_值转换为coldfusion_datetime_值”。日期时间对象具有特定的含义。即使在CF中,它也不同于字符串。虽然CF在表面上对类型很宽松,但字符串、日期时间、数值等之间存在差异。它们可以由完全不同的类来表示,在使用时会影响其行为。因此,列的MySQL数据类型与CF处理方式有很大关系。数据类型用于确定用于表示列值的底层Java类。 - Leigh
<cfquery name="q" datasource="#dsn#"> SELECT date_format(someDateColumn, '%m/%d/%Y') AS dateString, someDateColumn AS dateTimeObject FROM SomeTable </cfquery> <cfoutput> dateString = #q.dateString[1].getClass().getName()#<br> dateTimeObject = #q.dateTimeObject[1].getClass().getName()#<br> </cfoutput> - Leigh

2
你可以使用CreateODBCDateTime(date)函数来实现这个功能。

3
哦,方向错了。这个是将 ColdFusion 的日期格式转换成 MySQL 格式以便插入数据库中。原帖的作者要做的是将 MySQL 格式转换为 ColdFusion 格式。 - Eric
由于这是在谷歌搜索“coldfusion datetime to mariadb datetime”时的第一个结果,我认为它仍然具有价值。 - Tom Ladek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接