質問編集履歴

2 修正

Z-TALBO

Z-TALBO score 493

2016/03/05 18:03  投稿

MySQLのDATETIME型を日付で抽出
DBのtableの設計で
id,
name,
body,
date datetime
とdateに関してはdatetime型とし、date('Y-m-d H:i:s);
で値を飛ばして保存しています。
ただdateを抽出してから、分解するのは下記のコードを見つけたのでやってみました。
```PHP
while ($row = $stmt->fetch()) :
 $datetime = $row['date'];
 list ($year, $month, $day, $hour, $minutes, $second) = preg_split('/[-: ]/', $datetime);
```
ここからが本題の質問になりますが、
日付で検索するのに、どのような形になるのか?お聞きしたいと思います。
```PHP
// 年月日で検索するフォーム
<select name="year">
<select name="month">
<select name="day">
<input type="submit" value="検索">
// 間はもう省略しております。
// POSTの受取
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
// DB
$dbh = connectDb();
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $dbh->prepare(
 "SELECT * FROM テーブル ORDER BY name WHERE date = ?");
// 問題の箇所、、、
POSTの値をdateにまとめて?$dateとして送る?
すみません、動き的な部分などわかっていないので、、、
$stmt->execute();
```
要するに、時間は関係なく、検索したい年月日を入れるとその年月日に合うデータを抽出したいのですが、datetimeだった時のがよくわかっていません。
よろしくお願いします。
自分の浅い考えですが、
$date1 = $year $month $dayと
$date2 = $year $month $day +1
みたいので、date1からdate2っていう範囲選択をする感じになるのでしょうか?
みたいので、date1からdate2っていう範囲選択をする感じになるのでしょうか?
-------------------
追記
```PHP
$serch_time = $year . '/' . $month . '/' . $day;
省略
("SELECT * FROM テーブル ORDER BY name ASC WHERE CAST(period_dttm AS DATE) = ?");
$stmt->bindValue(1, $serch_time, PDO::PARAM_STR);
```
一応、2016/03/05のような感じにはしたのですが、エラーがでております。。。。
  • PHP

    31298 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    9506 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1

Z-TALBO

Z-TALBO score 493

2016/03/05 16:11  投稿

MySQLのDATETIME型を日付で抽出
DBのtableの設計で
id,
name,
body,
date datetime
とdateに関してはdatetime型とし、date('Y-m-d H:i:s);
で値を飛ばして保存しています。
ただdateを抽出してから、分解するのは下記のコードを見つけたのでやってみました。
```PHP
while ($row = $stmt->fetch()) :
 $datetime = $row['date'];
 list ($year, $month, $day, $hour, $minutes, $second) = preg_split('/[-: ]/', $datetime);
```
ここからが本題の質問になりますが、
日付で検索するのに、どのような形になるのか?お聞きしたいと思います。
```PHP
// 年月日で検索するフォーム
<select name="year">
<select name="month">
<select name="day">
<input type="submit" value="検索">
// 間はもう省略しております。
// POSTの受取
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
// DB
$dbh = connectDb();
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $dbh->prepare(
 "SELECT * FROM テーブル ORDER BY name WHERE date = ?");
// 問題の箇所、、、
POSTの値をdateにまとめて?$dateとして送る?
すみません、動き的な部分などわかっていないので、、、
$stmt->execute();
```
要するに、時間は関係なく、検索したい年月日を入れるとその年月日に合うデータを抽出したいのですが、datetimeだった時のがよくわかっていません。
よろしくお願いします。
よろしくお願いします。
自分の浅い考えですが、
$date1 = $year $month $dayと
$date2 = $year $month $day +1
みたいので、date1からdate2っていう範囲選択をする感じになるのでしょうか?
  • PHP

    31298 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    9506 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る