2009-07-11 39 views
0

私は、12のタイムスタンプカラムと3つの他のフィールドを持つテーブルを持っています。 タイムスタンプ列のフィールドタイプを変更することはできません。複数のmySQL日付フィールドを同時に作成する

15フィールドすべてをm/d/yとしてユーザーに表示する必要があります。それぞれにDATE_FORMATを適用することなく、それらを同時にフォーマットする方法はありますか? 可能であれば、それぞれのために

SELECT DATE_FORMAT(field, '%c/%e/%y') AS field
とする必要はありません。

私は、&というmySQLを使用しています。私は変換がどこに起こるか気にしません。

答えて

1

あなたはこのようなPHPで簡単な日付変換ルーチンを書くことができます:

私はここから盗んだ
function mysql2table($date) { 
    $new = explode("-",$date); 
    $a=array ($new[2], $new[1], $new[0]); 
return $n_date=implode("-", $a); 
} 

http://www.daniweb.com/code/snippet736.html#

値がAであれば、あなたのSQLの列の結果を通じて、単純にループをチェック日付と変換します。

+0

おかげさま...私は何を考えていたのですか?私はすでに日付変換機能を持っているので、助けてくれます。私はオールインワンのソリューションを望んでいました。 – Jason

0

私はそれが可能であるとは思っていませんが、結果が返されるまでどの列があるかをクエリで知ることはできません。各日時の書式を変更するように指示する必要があります。マット・

1

はあなたのための型を変換することができMDB2やPDOなどのデータベース層を、使用して検討していますか? MDB2は、YYYY-MM-DD形式を表示するが、strftimeとstrtotimeを使って簡単にm/d/yに変換できる日付型を持っています。

MDB2の使用例:

$dsn = "mysql://[email protected]/db"; (not sure about DSN format, you might have to poke the MDB2 documentation) 
$connection = MDB2::connect ($dsn); 
$connection->loadModule ("Extended"); 
$rows = $connection->getAll ("your query", array ('date', ...), $parameters, array (paramater-types), MDB2_FETCHMODE_OBJECT); 

if (MDB2_Driver_Common::isError ($rows)) throw new Exception ("Error!"); 
else { foreach ($rows as $row) { ...Do something... } } 

あなたはMDB2 on InstallationWikiで、このようにMDBを使用して詳細についてのドキュメントを見つけることができます。また、MDB2データ型のリストと、それらが表示値のためにマップされているものが見つかります。また、Docs for MDB2_Extendedは情報源となるでしょう。

編集:明らかに、各行でstrftimeとstrtotimeを別々に使用する必要があります。 MDB2_FETCHMODE_OBJECTMDB2_FETCHMODE_ORDEREDまたはMDB2_FETCHMODE_ASSOCに切り替える場合は、foreachループを使用して、再フォーマットが必要なすべての行でstrftimeとstrtotimeを実行できます。

+0

ありがとう...私はPDOを見ました - それは私が今すぐに掘り下げることができないものです。 – Jason

+0

ああ。さて、あなたがそれらを調べる時間があることを願っています。彼らはコードを*ロット*で簡単に書くことができます。 MDB2では、SQLを少し書かなくても自動的に更新と挿入が行えます。おそらく私はそれをまだ分かっていないが、おそらく選択するだろう。 :) –

関連する問題