• ベストアンサー

timestamp(14)のフォーマットについて

データベースに新規データを追加した場合、timestamp(14)で、自動的に日付情報を取得しています。 (例) 20070330120003 これを、phpファイルで、「2007年3月31日」のように表示させたいのですが、phpでこのようにフォーマットさせる関数はあるのでしょうか? 現在は、SQL側で、 $sql = "SELECT *, concat(YEAR(timestamp),'年',MONTH(timestamp),'月',DAYOFMONTH(timestamp),'日') as time_format ・・・ とさせています。 以上、宜しくお願い致します。 VERSION: php4

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

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.2

<?php $string = "20070330120003"; print Date_Format( $string ); function Date_Format( $d ){ $Year = substr( $d, 0, 4 ); $Month = substr( $d, 4, 2 ); $Day = substr( $d, 8, 2 ); $a = date( "Y年n月j日" , mktime(0,0,0,$Month,$Day,$Year)); return ($a); } ?> これでいかがでしょうか?

wdwdwd
質問者

お礼

有り難うございました。参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • luka3
  • ベストアンサー率74% (310/416)
回答No.1

こういうことなんでしょうか? $date = "20070330120003"; $pattern = "/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/"; preg_match($pattern, $date, $matches); $year = intval($matches[1]); $month = intval($matches[2]); $day = intval($matches[3]); echo $year."年".$month."月".$day."日";

wdwdwd
質問者

お礼

有り難うございました。参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • timestampの日付の表示変換

    Mysqlのデータベースの中にある フィールド名: date_time 種別: timestamp を下記のPHPコードですると、 echo $row['date_time']; 下記のように表示されます。 2008-02-04 00:00:00 これを、Monday, February 4, 2008 と表示させたいのですが、 どのように日付表示を変換すればよいのか分かりません。 どなたか教えてもらえますか? 宜しく御願いします。

    • 締切済み
    • PHP
  • sql serverのsqlについて

    windows7 64bit sql server 2012 expressをつかっています。 select YEAR("日付") as yere,MONTH("日付") as month,収支名,sum("金額")as kin from 収支 group by YEAR("日付"),MONTH("日付"),収支名 を実行して、 yere month 収支名 kin 2013 6 支出 13011 2013 6 収入 33500 2013 7 支出 20000 2013 7 収入 70000 と、なりましたが、同じ年、月の収支と支出を求める表を得るにはどうしたらよいでしょうか? yere month 差 2013 6 -24089 2013 7 50000 のような感じです。 (もとのテーブルはこれです) id 日付 収支名 項目 金額 1 2013-06-16 収入 給料 15000 2 2013-06-16 支出 ガス代 555 ...... 宜しくお願いします。

  • アクセスクエリ関数 「Format」「Format$」の違い

    テーブルの「日付」フィールド(日付型)には 「2009/5/20」とデータが入っていて、 クエリのSQL文を SELECT Format([テーブル]![日付],"yy/mm/dd") AS フォーマット, TypeName([フォーマット]) AS フォーマットのデータ型, Format$([テーブル]![日付],"yy/mm/dd") AS [フォーマット$], TypeName([フォーマット$]) AS [フォーマット$のデータ型] FROM テーブル; とした結果どちらも 「09/05/20」「String型」で結果は同じです。 「Format」「Format$」は何が違うのでしょう? 宜しくお願い致します。

  • mysqlで年と月を別々のカラムに収納しています

    mysql5.1を利用してデータベースを作成しています。 テーブルに年と月を別々で収納しているのですが、 そのテーブルの中のデータから「今月を過ぎていなければ」という条件で抽出したいのですが、 SQLの書き方がわかりません。 私のSQLの基礎の基礎しか教えてもらっておらず、 あとは独学で、現在のレベルはようやく少しサブクエリを書き出した(学びだした)レベルです。 しかもwindows上のNavicat Lite(アプリ)上で書いてる状態です。 自分のイメージ的には下記のような感じなのですが、動きません。 どなたか教えていただけないでしょうか。 よろしくお願いします。 hoge_tblテーブルからBカラムが'hoge'かつ、 hoge_tblテーブル内のYEARカラムとMONTHカラムの値を今月と比較して、 「今月を過ぎていなければ」といった条件を付けたいと考えております。 select A from hoge_tbl where B = 'hoge' and (select date_format(now(),'%Y%m') as NOW) < (select date_format('(select YEAR,MONTH from hoge_tbl )’,'%Y%m') as END)

    • ベストアンサー
    • MySQL
  • SQLがうまくいかない!

    SQLがうまくいかない! SQLについて、調べたんですが、わからないので教えてください! last_year(日付データ)関数 と round(日付データ,'書式')関数についてのご質問です。 select last_year('2007-01-01') from 表名; とやるとうまくいくのに 、 select round('2007-01-01','month') from 表名; とやるとエラーになってしまいます。 last_year関数では、'2007-01-01'は日付データとして扱われるのに、round関数では日付データとして扱われないのはなんででしょう? ちなみに、 select round(to_date('2007-01-01','yy-mm-dd'),'month') from 表名; とやるとうまくいきます・・・SQLの仕様ですか!? どなたか教えてください!宜しくお願い致します。

  • timestampのデータはどのようにして入力

    するのでしょうか? create table tablex(no serial primary key,time timestamp); insert into tablex(time) values(?); において?の部分に入れる文字列のフォーマットはどうなるのでしょうか? 例えば 2005年5月5日5時55分55秒 を入れるにはどうしたらいいのでしょうか?

  • oracleのsqlで日付判断

    テーブルに以下の以下の様に日付が登録されています。、 cal_year cal_month cal_day item1 item2 item3 ・・・・・・ : 2019 6 29 2019 6 30 2019 7 1 2019 7 2 ; 2019 7 10 2019 7 11 ; 2019 7 20 2019 7 21 : 2019 7 31 2019 8 1 2019 8 2 : 見ての通り、テーブルに登録されている日付が、年、月、日と各々で 登録されており、また、月と日には、ゼロ埋めされてない値となって います。 因みに、cal_year、cal_month、cal_dayの属性は、varchar2です。 以下のsqlで、日付指定で、システム日付より以降の日付のデータを 取得しようとしているのですが、上手く行きません。 select * from tableA where cal_year||cal_month||cal_day>to_char(sysdate,'FMYYYYMMDD') order by cal_year,to_number(cal_month),to_number(cal_day) ; 今日、2019/7/22でやると、「2019 7 3」以降が出力されます。 また、日付を直接指定するとエラーとなります。 select * from tableA where cal_year||cal_month||cal_day>to_char('2019722','FMYYYYMMDD') order by cal_year,to_number(cal_month),to_number(cal_day) ; 「SQL : ORA-01481: 数値書式モデルが無効です」となります。 何がいけないのでしょうか。 このような使い方はダメなのでしょうか。 それとも、使わない使い方をしているのでしょうか。 お願いいたします。

  • ODBC SQLサーバーでSQLを実行したい・・・

    ODBC SQLサーバーでSQLを実行したい・・・ 昨日から入り浸っている初心者PGです。 昨日は、実行日から直近の金曜日の日付を抽出するというSQLを質問させて頂きました。 今回は前月の月初第一金曜日に当たる日付を出力するSQLについての質問となります。 下記のSQLは先輩が作成したSQLになります。 もっと簡単に書けないか悩んでいます。 補足として日付は8桁で出力をしたいです。(例:20100507) 宜しければご教授賜りたいです。(原文そのままコピーしてますw) /* いけてるsql */ SELECT case (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime)))) when '-1' then datename(year,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) + datename(month,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) + RIGHT('00'+CONVERT(varchar,datename(day,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + 6) ),2) else datename(year,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) + datename(month,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) + RIGHT('00'+CONVERT(varchar,datename(day,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime) + (6 - (datepart(Dw,cast(datename(year,dateadd(mm, -1, getdate())) + '-' + datename(month,dateadd(mm, -1, getdate())) + '-' + '01' as datetime))))) ),2) end

  • int timestampの日付計算(Postgres)

    postgres7.3.3で、 int timestamp型で日付計算はできますか? 以下のカラムで、 2004/04/24というSQLで取得したいです。 型     項目名  データ timestamp 開始日  2004/03/25 int    表示日数 30

  • タイムスタンプを秒数で取得したい

    DB初心者で、PostgreSQL V.7.3.2 + PHP を使っています。 T_TIME というテーブルに、 日付を格納したTARGET_DATEと、 時刻を  〃 TARGET_TIMEというフィールドがあります。 このテーブルからタイムスタンプをセレクトしたいと思い、つぎのようなSQL文を 作成しました。 SELECT TO_TIMESTAMP(TARGET_DATE ||' '|| TARGET_TIME, 'YYYY-MM-DD HH24:MI') AS JIKOKU FROM T_TIME ところが、この結果は書式化された文字列のため時刻の比較を簡単に行うことができません。 なんとか書式化した形でなく、1970年からの秒数でタイムスタンプを取得したいのですが。 どうすれば良いのでしょうか。