2009-07-25 16 views
7

私はSQLite DBからタイムスタンプを取得してフォーマットしようとしています。私の読書では、SQLiteの書式設定は、PHPで使用可能な日付書式変換と比べて非常に制限されているようです。 、SQLiteクエリの日付書式

を3月3日:

SELECT strftime('%m %d, %Y', timestamp) AS saveddate

そして、それは返します:私は、このクエリではJavaScriptから来てい

03 03、2009

私はそれを返すために取得しようとしています2009

ご意見はありますか?

答えて

6

SQLite does not support month names、悲しいことに。ルックアップテーブル、ケースステートメント、またはプレゼンテーションレイヤー上のスイッチを使用して月名に変換する必要があります。

6

SQLiteは、データ保存層に属し、月名などの日付の書式設定などのユーザーインターフェイスに属する機能ではなく、機能に焦点を当てています。私は強く、あなたが適切な層に各種類の機能を保持するための非常に有用なヒントとしてこれを取ることをお勧めします。

データ記憶層のUI機能を誤って配置することに熱心であれば、これは、あなた自身の書式設定関数をC言語で書いてSQLiteでフックするか、信じられないほど厄介なSQL変換を行っていましたが、それが厄介な価値のあるユースケースは想像できません。

+3

プレゼンテーション層がSQL文の出力のテキストファイルの場合はどうなりますか?これは非常に基本的な必要性であり、悲しいSQLLiteはそれをそのままの状態でサポートしていません。しかし、その目標と、それがどれほど軽いのかを考えれば、この欠けている機能を受け入れることができます。 – Kuberchaun

3

短い月名

substr ("--JanFebMarAprMayJunJulAugSepOctNovDec", strftime ("%m", thedate) * 3, 3) 

完全な月の名前

rtrim (substr ("January--February-March----April----May------June-----July-----August---SeptemberOctober--November-December", strftime ("%m", thedate) * 9 - 8, 9)) 

ダッシュのみがページ上のそれを明確にするために使用されています。それらをのスペースに置き換えます。