2017-05-25 23 views
2

私は "posted time"フィールドを含む膨大なデータベースを持っています。日付をPythonで並べ替え

このフィールドのような値が含まれています:2日前、3ヶ月前、5分前...

を私はそれを二番目のパラメータ(日、月、分で最初の見ている必要苦労して並べ替えることができます)そして最初のパラメータである数字を見てください。

もっと良い(簡単な)方法があるのだろうか?

+2

巨大なデータベースにタイムスタンプの列はありませんか? –

+2

'python'または' sql' ??? – Praveen

+6

データベースに「2日前に」文字列値が含まれています... ?!それは長期的にはあまり有用ではありませんか? – deceze

答えて

4

コメントのいずれかで説明したように、データベース構造(または少なくともこの列)の変更を再考してください。比較日の全体点は、ある一定の時点に関連付けることができれば意味があります(つまり、エポック時間のような何らかの「絶対値」を持っていることを意味します)。

https://pypi.python.org/pypi/dateparser

パッケージのドキュメントから::

データベース設計で作業することはできませんあなたがいる場合や、そのスキーマのためのいくつかのあいまいな目的があり、あなたはすでに既存のPIPパッケージを確認することができます機能

  • 英語、スペイン語、オランダ語、ロシア語、20 o以上の日付の一般的な解析それらの言語に加えて言語の多数のフォーマット 不思議なファッション。
  • '1分前'、 '2 weeks ago'、 '3 months、1 week and 1 days ago'、 'in 2 days'、 'tomorrow'のような相対日付の一般的な解析。
  • タイムゾーンの省略形などUTCオフセットを持つ日付の一般的な構文解析: '2015年8月14日EST'、 '2013年7月4日PST'、'21 7月
    2013 22:15に0500' 。

  • 非グレゴリオ暦システムのサポート。サポートされているカレンダーを参照してください。

  • 広いテストカバレッジ。
+0

これは本当に良い答えです。私は特に、日付が絶対的なものでなければならないということを強調していますが、少なくとも相対的な日付を変換する機会を提供しています。 – mike

+0

いいね、私はこのパッケージを見ていきます。この値 "x時間前"は文字列として与えられているので、データベースの中でできることはあまりありません。ありがとう –

1

これらのファジィ値 "x y's ago"は、元のソースデータから計算された表示値です。 これらのデータを一部のAPIから調達していますか?

代わりに、これらの表示値の元のデータを表示するようにしてください。おそらく、これらのレコードをソースしている「巨大なデータベース」は、これらのファジーなものではなく、日付の絶対値を返すような方法で照会できます。

(私は、特に人にやさしいファジー日付スタンプを使用して、特にあなたがそれらをオフにすることができないときに、非常に迷惑になる傾向があることを発見しました。これは現実のものですが、タイムスタンプの付いたメモを含む発券システムのような、時間が重要なデータにとっては本当に支障があります。このUI傾向が悪化するのを楽しみにしています。

+2

"回答1分前" – Uriel

+0

@Uriel実際の笑い! :D – mike

+1

この傾向は、人に優しい理由からではなく、いわゆるビッグデータコレクター(ソーシャルネットワークなど)がパンやバターを世界に共有したくないことによるものです。自動スクラップの方が難しいほど、その観点からは優れています。 – zwer

関連する問題