2012-02-22 9 views
10

私は1つの問題があります...私のMySQLデータベースには、JQueryタイプのカレンダー内のToDoリストエントリを格納するテーブルがあります。
私はタイムスタンプを作成したらアラーム通知を生成しなければなりませんでした(カレンダーの日付ボックスのいずれかをクリックしたときに、いくつかのタスクをキー入力すると考えられました。Datetime to Integer

この予定リストアクティビティアプリは、自分の管理システムと統合するために取り組んできた外部アプリケーションです。私は気づいた、タイムスタンプの列はint(11)形式であるので、入力されたタイムスタンプは整数に変換されます。例えば

、これを見てみましょう:

2012-02-22 15:31:24 

私たちは、この形式に日時を変換するにはどうすればよい
1329899400 

に変換?試してみると秒単位ではありません:

intval(floor($datetime/86400)); 

助けが必要ですか?

+0

DateTimeをIntegerで表すことはできません。 DateTimeは、1970年の特定の日付以降(いくつかの優遇措置に応じて)からの秒数です。あなたが実際に知っているように、実際には見えないので、値が何を表しているか把握する必要があります。 –

+0

はい、私は数字のシーケンスが挿入されたタイムスタンプのためにちょっと「奇妙」なので、値が何を表しているのか分かっています。少なくとも私のために、これは私がPHP/MySQLをまだ学んでいるので、 ) – foxns7

+0

@Selang:番号は[UNIXタイムスタンプ](http://en.wikipedia.org/wiki/Unix_timestamp)です。これらは広く使われています(特にUNIXシステムでは特にそうです)。 – Chris

答えて

14

FROM UNIXTIMEは、日時フィールドにUNIXタイムスタンプをフォーマットすることができます。

SELECT FROM_UNIXTIME(time) 
FROM ... 

リバース機能はUNIX_TIMESTAMPだろう。


利用可能な場合は別の方法としては、PHPでそれを行うことができます:
をこのようなDB形式、それに日付を保存するには:DBから取得し、それをフォーマットするには

$datetimeStr = '2012-02-22 15:31:24'; 
$datetime = strtotime($datetimeStr); 

元の形式、このようなものを使用します。

$dateTimeFromDB = '1329921084'; 
$datetimeStr = date('Y-m-d H:i:s', $dateTimeFromDB); 
+0

さて、私はこのUnixtime関数を学んでいないのは全く馬鹿だ...返信ありがとう – foxns7

+0

それは働いた!ありがとうございました... – foxns7

+1

01.01.1970より小さい日付はどうですか? –

6

ここ

のための素敵なMySQLの UNIX_TIMESTAMP()機能だが
+0

「INSERT INTO db.table( 'timestamp')VALUES(UNIX_TIMESTAMP($ datetime))」です。私の場合は正しい命令ですか? – foxns7

+0

あなたの '$ datetime'が' YYYY-MM-DD HH:MM:SS'形式( '-'と': 'の代わりに異なる区切り記号を使うことができることに注意してください。 – Mchl

+0

$ datetime = strtotime($ datetime)を実行しましたが、データベースの値は2012年の「Year」部分のみを読み込みます。どのように起こったのですか? – foxns7