0

リレーション1:NのDBテーブルがあります。ここで、Nは1つのイベントの複数の日付を表します。日付の列はDateTimeタイプであり、後で使用できるようにオプションを保持したいのですが、タイプTimeに変更する必要がある場合でもそれほど悪くはありませんDate

問題は、いくつかのでそれらの複数の日付を表示する必要がある場合に発生しますGUI。関数を使用して日付を取得しGROUP_CONCATます。これは、JavaScriptでは、さまざまな日付を表すコンマ区切りの値を持つ文字列を操作することを意味します。これは、現在はデフォルトのSQLDateTime形式です- YYYY-mm-dd hh:mm:ss

この関数を使用しsplit(',')て各日時の値を取得しますDate。JavaScriptで文字列を分割して値を取得するときに、SQL列のタイプを次のように変更することができYYYY-mm-ddます。の場合は、これを逆にする必要がdd-mm-YYYYありGUIます。

ここでの進め方がわかりません。私は2つの主なオプションを念頭に置いています:

dd-mm-YYYYまず、SQLでフォーマットを使用して、すべての問題を解決する方法があるかもしれません。

2番目:JavaScriptでのある種の(複雑な?!?)文字列操作。日付の文字列を複数の要素を持つ配列に分割し、各要素を必要な方法でフォーマットしようとします。

正直なところ、2番目のオプションは避けたいのですが、最初のオプションが可能かどうかはわかりません。おそらく、私が考えていない別の方法があります。

4

2 に答える 2

3

これを試して..

SELECT GROUP_CONCAT(DATE_FORMAT( date_time_column, '%d-%m-%Y' )) FROM test_table;
于 2012-06-12T07:36:18.570 に答える
1

まず、コード内のあらゆる場所でネイティブのDate / DateTime形式を使用し、実際に表示したい場所でのみdd-mm-yyyyなどのローカライズされたバリエーションを使用することをお勧めします。最初の理由:それはあなたのコードで一貫しています。2番目の理由:並べ替え。

例:

2012-03-01    >    01-03-2012
2012-05-12    >    12-05-2012
2012-01-03    >    03-01-2012 

取得するネイティブ形式で並べ替え...

1: 2012-01-03
2: 2012-03-01
3: 2012-05-12

出力形式dd-mm-yyyyでソートすると、次のようになります...

1: 01-03-2012
2: 03-01-2012
3: 12-05-2012

...そして私はこれがほとんどの人が望んでいることではないかと思います。

SQLによる出力の調整

SELECTクエリで出力を変更できます。ほとんどのRDBMSは、このための関数を提供しています。たとえば、MySQLではDATE_FORMAT次のようになります。

SELECT DATE_FORMAT(NOW(), '%d-%m-%Y');

SQLによる出力の調整

ここで説明されているphpを使用して出力を変更することもできます。

JavaScriptを介して出力を調整する

JavaScriptでもこれを行うのは難しいことではありません:これはそれを詳細に説明する素晴らしいSO投稿です。

于 2012-06-12T07:45:02.747 に答える