0

MySQLデータベースに名前と生年月日を照会するサービスとcallResponder(Flash Builder4のGenerateServiceCallとGenerateFormを介して)を作成しました。

私の問題はとても単純だと思いますが、解決策を見つけることができませんでした...

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;
    }
}

残念ながら、これは部分的にしか機能しません。データベースでこれと同じフォームを更新しようとすると、切断されます。私はここで何かが欠けているので、1つか2つのヒントをいただければ幸いです:-)

ありがとう!

4

2 に答える 2

0

'0000-00-00'ではなく、不明な日付にはNULLを格納することをお勧めします。この場合、NULLがより正確な値です。

NULLとして保存し、別の値として表示する場合は、次のようにすることができます。

SELECT COALESCE(date_column,'0000-00-00') as formatted_date
FROM your_table
于 2011-03-15T22:00:25.537 に答える
0

それが誰かに役立つかどうかはわかりませんが、DateFieldを含むフォームから値を挿入するのに問題がありました。そのフォームは、 FlashBuilderのフォーム生成ツールを使用して生成されています。

問題は、Flash Builderによって生成されたサービスが、何があっても日付オブジェクトを予期することです... 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('...')を実行しようとしません。

于 2011-03-16T19:15:18.310 に答える