2017-08-24 14 views
2

タイトルに可能な限り要約しようとしましたが、あまり明確でない可能性があります。日付を返す日付と文字列nullの場合は " - "、文字列でない場合は日付として前に渡す

ここにあります。

私は外部結合に日付列を返すクエリを持っています。したがって、結果の行に「空の日付」が表示されます。このため私はifnull()を使ってその空白を " - "に変更します。

問題は、フロントエンドで{{order.LastDateOrder | date : "dd-MMMM-yyyy HH:mm:ss"}}のように列を処理できないという問題です。列にデータが含まれている場合、 '2017-06-05 07:27:50'のような形式で表示されますが、実際には私が望むのは'05 June 2017 07:27:50'のように表示されます。 nullの値は、" - "と表示されます。

私が欲しいものを達成するための代替手段は何ですか?

(Iは、MySQL、および角度を使用しています)

、私は完全に物事のMySQLの側でフォーマットを扱う推薦、

答えて

1

、ありがとうございました。次のクエリを考えてみます。

SELECT 
    t1.id, 
    COALESCE(DATE_FORMAT(t2.col, '%d-%m-%Y %H:%i:%s'), '-') AS date_label 
FROM table1 t1 
LEFT JOIN table2 t2 
    ON t1.id = t2.t1_id 

次に、角度側に、ちょうど必要な特別なフォーマットで、基本的な文字列を表示。

私のアプローチのジストは、希望の文字列形式に日付列を変換することですが、NULLをダッシュ​​に置き換えるだけです。そして我々はCOALESCEを使ってNULL値を簡単に扱えるMySQLでこれを行います。

0

私はformatDateとしてカスタムフィルタ名を作成しました。ビューでは{{order.LastDateOrder | formatDate}}として使用できます。それがあなたを助けることを願っています。

angular.module('test').filter('formatDate', function() { 
    return function (date) { 
     var mydate = new Date(date); 
     var month=["January", "February", "March", "April", "May", "June", 
      "July", "August", "September", "October", "November", "December" 
     ]; 
     return mydate.getDate() + month[mydate.getMonth()] + mydate.getFullYear() + mydate.getHours()+ mydate.getMinutes()+ mydate.getSeconds(); 

    } 
}) 
関連する問題