• ベストアンサー

datetime型、未入力時の日時表示について

PHP&MySQL初心者です。 同窓会の申し込みフォーム作成していますが、日時表示について質問です。 参加希望日時をカレンダー入力させて、データベースに登録しています。 日時はカラムを分けずにまとめてdatetime型にしています。 ■第一希望 [カレンダー入力](年月日時分をまとめて) ■第二希望 [カレンダー入力](年月日時分をまとめて) →データベース(mySQL)には、 datetime型「2016-01-05 02:50:00」形式で登録。 カレンダー入力せずにINSERTされたとき、datetime型だと、 「0000-00-00 00:00:00」で登録されますが、 この値を、date('Y年n月j日 g時i分', strtotime(カラム値)); で読み出すと、「1970 年 1 月 1 日 00:00:00」と表示されます。 このままではまずいので、単純に空欄としたいのです。 カレンダー入力されなかったとき、つまり、「0000-00-00 00:00:00」で登録されているとき、 日時表示を空欄にするスマートな方法はありますか?

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8525/19380)
回答No.2

if(カラム値,date('Y年n月j日 g時i分', strtotime(カラム値)),"")

hide_momiji
質問者

お礼

ありがとうございます。解決しました。

その他の回答 (1)

回答No.1

MySQL側の日時を挿入するカラムに null が入る事を許すようにして、 MySQLからデータを取得してきた際に PHP側で以下のように null チェックをしてあげれば良いと思います。 if ( !is_null( カラム値 ) ) { ...... } 余談ですが、 "「1970 年 1 月 1 日 00:00:00」" これはUNIX時間というので、覚えておくと何かと便利です。 https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93

hide_momiji
質問者

お礼

ありがとうございました。 解決しました。 UNIX時間、という言葉も教えていただきありがとうございます。

関連するQ&A

  • datetime型の秒を切り捨てるには?

    PHP&MySQLで、日付時間入力のフォームを作成しています。 日付時間表示は、「2015年11時4分 7:00」という表示フォーマットにしたいのです。 日付時間入力フォームは、 https://www.softel.co.jp/blogs/tech/archives/4294 こちらを参考にして、datetimepickerのカレンダー入力に、時間入力を組み合わせたデモサンプルを利用しています。 年日時間を個別にデータベース管理する必要はなく、日時分まで管理したいことから、データベースのほうはひとつのカラムにdatetime型で定義しました。 datetimeなので、「2015-11-04 07:00:00」で格納されます。 そこからこの値をとりだして、画面表示させたいのですが、 「2015年11時4分 7:00」で表示させるために、秒を切り捨てたいのですが、 この場合どうすればいいのでしょうか? ************************** mySql:ver5.6 PHP:ver5.4 phpMyAdmin 3.4.9 型:datetime

    • ベストアンサー
    • PHP
  • thunderbird受信で送信日時が時分しか表示されない

    thunderbirdバージョン 1.5 (20051201)です。osはxp-sp2。 最近、ローカルフォルダ下の一覧表示で、受信メッセージの送信時間が、年月日が表示されなく、時分だけの表示になりました。 メッセージのヘッダにある送信日時も時分だけです。 以前は年月日時分が表示されていたのに。 YahooメールをPCでthunderbirdを使って受信しています。 Yahooメール(web上)では年月日時分が表示されています。 Yahooメールかthunderbirdで、そういう表示設定ありましたっけ? thunderbirdから送信してみました。送信済みメッセージも時分しかありません。どうして????

  • MySQLのDatetime型の引き算

    ある機械の1日当たりの処理数を計算したいと思います。 Datetimeの引き算がうまくいかないので、解決方法を教えてください。 1日当たりの処理数は下記の式で計算できます。 1日当たりの処理数=期間内処理数÷((現在日時-作業開始日時)÷(60×60×24)) ※現在日時-作業開始日時で期間の秒数を計算 それを1日の秒数=86400秒(60秒×60分×24時間)で割る。 ------------------ 環境 MySQL:5.0.77 ------------------ テーブル: test カラム :num(INT型),start_date(DATETIME型) ※numは期間内の機械の処理数です。 まず、上記の1日当たりの処理数の数式をSQL文に反映させてみました。 SELECT num , num/((now()-start_date)/86400) as shorisu FROM test 結果は表示されるのですが、かなり大きな数値になって出てきてしまいます。 WEBで情報を検索したところ、DATETIME型を直接減算すると求める結果にならないことはわかりました。 MySQLのページ(11.5. 日付時刻関数) http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html を見てみましたが、どの関数を使えばよいのかいまいちわかりません。 now()-start_dateの部分が正しい値を返すようになれば良いのですが、どのような式を書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • 日付や日時を格納する場合の型はどうしていますか?

    WEBアプリケーションで データベース(MySQL)を使うのですが、 日付や日時を格納する場合の型は varchar(10)、date、datetime のどれにしていますか? 文字型と日付型か迷っているので、 メリット、デメリットがあれば知りたいです。

    • ベストアンサー
    • MySQL
  • RFC822形式での日時の取得

    いつも勉強させていただいております。 PHP初心者です。 データベース:PostgreSQL PHPのバージョン:4.4.2です。 RFC822形式での日時の取得について教えてください。 「$tdata」のカラムに「2011-01-27 12:59:59.123456」の形式で入っている投稿日時をRFC822の書式(Tue, 26 Sep 2006 17:04:07 +0900)にするため、以下のように設定しました。 ※参考ページ:http://okwave.jp/qa/q2433033.html ----------------------------------------- $tdata2 = date("r",strtotime($tdata)); $list .='投稿日時:'.$tdata2.''; ----------------------------------------- 投稿日時はすべて「Wed, 31 Dec 1969 23:59:59」と表示されてしまいました。 正しい投稿日時を表示するようにするには、どのようにすれば良いでしょうか。 お分かりの方がいらっしゃいましたら、ご教示ください。 また、最新更新日時も同じページに表示したいと思っています。 最後に投稿した記事の投稿日時を表示するにはどのように設定すればよいでしょうか。 あわせて教えていただけましたら助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 日時を保存するカラムの型について

    日時を保存する型としてベストな型はどれなのでしょうか? MySQL5.1にて日付を保存するカラムをdatetime型で設計をしていたのですがタイムゾーンを考慮したい場合にはどうするのがベストでしょうか? タイムゾーンを別カラムで持つ場合、単位を時間で持つと計算が手間のように感じ、それならunixtimeをint型で持って、時差情報も秒で持てば計算がらく、と思ったのですが、、、 こうやってますよ、という事例などありましたら教えてください

  • DB登録に関する日付の認識

    はじめまして、こんばんは。分からないことがあり質問させていただきます。 現在、PHPにてMySQLへアクセスログを登録するものを作成しており、同じ日付に複数訪れた人は、最終日時。はじめて訪れた人はその日時を登録したいのですが、登録(または更新)する際、データベースに設定のdateカラム(datetime)を参照したとき、同じ日付をどう判別するのか?が分かりません。 以上のことから、これまで年月日のみをdateカラムに登録していたのですが、時間も登録したく考え、改め見直しているのですが、時間までをも登録した場合の日付の判別が分からないのです。 お恥ずかしいとは思うものの、現在の登録スクリプトは、 $y = date("Y"); $m = date("m"); $d = date("d"); $date = $y.$m.$d; $sql = "insert................ それを、 $date = date("Y-m-d H:i:s"); で登録したいと考えております。 お忙しい中恐縮ですが、ご指導いただければ幸いです。

    • ベストアンサー
    • PHP
  • ASP.NET(VB) 和暦の表示方法について

    ASP.NET VB  データに登録された日付日付をWebページに和暦で表示する方法 について以下のようにデータベースから sqlDatasource1 と FormView1 を組み合わせ入力年月日を取得し Formに表示したいのですが、西暦表示になってしまいます。 教えてください。 'システム和暦年月日表示 Dim cult As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP") cult.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar     DIM YMD AS Datetime YMD = (CType(FormView1.FindControl("入力年月日Label"), Label)).Text me.txYMD.text = YMD.ToString("ggyy年MM月dd日", cult)

  • 日時を期間指定で出力するには?

    お世話になります。 データベースに、日付VARCHAR(100)というカラムがあり、そこに、"2005/02/01 20:00"のようなデータを登録していっています。これを、指定期間で検索をかけて出力することは可能なのでしょうか。 SELECT * FROM table WHERE BETWEEN '2005/01/01 00:00' and '2005/02/10 00:00'; とします。そのとき、2005/02/01 20:00がヒットできればいいのですが、VARCHAR型で果たしてできるのでしょうか。(正直やってみたのですが、うまくいきません。やはりだめ??) datetime型にすると、2005/02/10 20:00とデータベースにいれると、2005-02-10 20:00:00 となるので、できればVARCHAR型でやりたいのですが。。。 何か方法はないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • [MYSQL]日付のカラムにデーターを自動入力するようにしたいのですが

    MYSQL初心者です。テーブルの中に登録日時とカラムを作成し、データー入力の作成日時が自動入力出来るようにしたいのですが、 いろいろやっても設定方法がわかりません。どなたか初心者に愛の手をお願い致します。

    • ベストアンサー
    • MySQL