【问题标题】:Flex DateField and MySQL default date value 0000-00-00Flex DateField 和 MySQL 默认日期值 0000-00-00
【发布时间】:2011-03-15 20:44:42
【问题描述】:

我创建了一个服务和 callResponder(通过在 Flash Builder 4 中生成服务调用和生成表单)查询 MySQL 数据库中的姓名和出生日期。

我想我的问题很简单,但我一直没能找到解决方案...

当我在 MySQL (0000-00-00) 中有一个空日期时,我绑定的 DateField 指示 1899-11-30

我尝试了几乎所有可能的方法...一个自定义 labelFunction,一个在调用我的服务后立即调用的自定义函数,以尝试像这样处理我的数据.. :

protected function parseDate(date:Date):void
{
    if (date.getFullYear() == -1) {
        friendbirthdate.selectedDate = null;
    }   else {
        var df:DateFormatter = new DateFormatter;
        df.formatString = 'YYYY-MM-DD';
        friendbirthdate.selectedDate = date;
    }
}

不幸的是,这仅部分有效。当我尝试在数据库中更新相同的表单时,我会断开连接。我在这里遗漏了一些东西,非常感谢一两个小费:-)

谢谢!

【问题讨论】:

  • 填写这个空白“我尝试了几乎所有可能的____”来做什么?当你得到一个空的日期时,你期望会发生什么?您是否在调试模式下运行以查看从服务器返回到 Flex 应用程序的数据?那里的日期值是多少?

标签: mysql apache-flex null datefield


【解决方案1】:

我建议您为未知日期存储 NULL,而不是“0000-00-00”。在这种情况下,NULL 是一个更准确的值。

如果您想将其存储为 NULL 并将其显示为不同的值,您可以执行以下操作:

SELECT COALESCE(date_column,'0000-00-00') as formatted_date
FROM your_table

【讨论】:

    【解决方案2】:

    不知道它是否会对某人有所帮助,但我无法从包含 DateField 的表单中插入值。该表单是通过 Flash Builder Generate Form 工具生成的。

    问题是由 Flash Builder 生成的服务需要一个 Date 对象,无论如何...如果您提交表单时未在 DateField 中选择日期,则服务调用会崩溃。

    让我们看一下生成的示例服务的一部分(创建和更新函数),我们可以看到 PHP 期望将日期对象转换为字符串,如下所示:

    mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendlastname,  $item->friendbirth->toString('YYYY-MM-dd HH:mm:ss'));
    

    首先,确保 MySQL 中的 Date 字段的默认值为 NULL。

    然后像这样改变创建和更新函数:

    if ($item->friendbirth == null)
        $friendbirth = null;
    else
        $friendbirth = $item->friendbirth->toString('yyyy-MM-dd HH:mm:ss');
    
    mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendnickname, $friendbirth);
    

    这样,服务调用脚本就不会尝试做那种 null->toString('...')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2017-09-21
      • 2012-03-16
      • 2013-06-09
      • 2015-07-19
      • 2013-07-12
      • 1970-01-01
      相关资源
      最近更新 更多