0

タイムスタンプ データ型は、「2013 年 1 月 17 日木曜日、午前 11 時 47 分 49 秒」という日付形式を取り込んだり保存したりできませんが、クライアントがその形式を好むため、この形式を db に保存したいと考えています。varchar または text を使用して保存できますが、これらのデータ型では TIMESTAMPDIFF 関数を使用して数分の計算を行うことができません。何か助けてください:

4

4 に答える 4

0

その形式のみが必要な場合は、フィールドのデータ型をVARCHARに変更しますが、DATETIME / TIMESTAMPとして保存してから、表示中にphpのDATE形式を使用して希望どおりに表示することをお勧めします。

于 2013-01-17T10:10:42.097 に答える
0

格納されている形式は実数です。表示する形式は、そこから計算する必要があります。

ここに小さなサンプルがあります: http://www.plus2net.com/php_tutorial/php_date_time.php

于 2013-01-17T10:07:41.600 に答える
0

あなたが説明した保存の問題は、実行せずにデコードするのが難しい長い文字列の代わりに、UNIX タイムスタンプ (INT)、ISO8601 (2013-01-17T19:47:49Z)、または DATETIME (すべてを UTC に設定してください) を使用することで解決できます。タイムゾーンと DST の問題に。

インターフェイスに日付またはタイムスタンプを表示する場合にのみ、必要なタイムゾーンとフォーマットに変換します。唯一のインターフェースがブラウザーである場合は、javascript の Date オブジェクトを使用して現地時間に変換します (任意の形式で)。

MySQL クエリの例:

SELECT UNIX_TIMESTAMP(`datetime_stsuff`) FROM `whatever` LIMIT 1

また

SELECT `int_unixtimestamp_seconds` FROM `whatever` LIMIT 1

Javascript の例:

var objDateFromDatabase=new Date(<?php echo json_encode($nUnixTimestampFromDB);?>*1000);

また

//note that older browsers don't support the Z suffix ("Zulu time" (GMT or UTC)) so use +00:00 instead (2012-01-01T12:34:56+00:00).
var objDateFromDatabase=new Date(<?php echo json_encode($strISO8601TimestampFromDB);?>*1000);

クライアントの希望に合わせてフォーマットするために使用できるメソッドについては、 MDN Date オブジェクトのドキュメントを参照してください。キーワード UTC を含まないメソッドは、ブラウザーのタイムゾーン (OS で構成されたタイムゾーン) に既に変換された値を返すため、わざわざユーザーにタイムゾーンを尋ねる必要はありません。

于 2013-01-17T10:35:43.487 に答える
0

タイムスタンプ値をそのまま保存する必要があります-TIMESTAMP形式。

DATE_FORMAT関数を使用して、値をフォーマットします。たとえば、-

SELECT DATE_FORMAT(column1, '%W %M %Y') FROM table1;
于 2013-01-17T10:42:35.787 に答える