質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

1422閲覧

MySQLの日付とテーブルにはいっているcreatedの日付の差分をとりたい

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/01/26 05:20

編集2016/01/26 05:45

A
SELECT CURDATE();

+------------+
| CURDATE() |
+------------+
| 2016-01-26 |
+------------+

B

SELECT created FROM products;

+---------------------+
| created |
+---------------------+
| 2015-08-11 11:12:53 |
+---------------------+

上記のAとBの月の差分をとって、5と出したいのですが、

SELECT内で1つにまとめて算出させたのですが、どのような記述になりますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

sql

1SELECT TIMESTAMPDIFF(MONTH, created, CURDATE()) AS diff, created 2FROM products;

投稿2016/01/26 07:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KatsumiTanaka

2016/01/26 12:52

回答者がいるのに、それとほぼ同等な回答する自身をベストアンサーに選ぶのは、いかがなものか? また、Kosuke_Shibuyaさんの質問に答えていないため、このアンサーも本当に仕様を満たしているのか疑問が残る
guest

0

これで月の差分が出ます。

SQL

1SELECT TIMESTAMPDIFF(MONTH,created, CURRENT_DATE) FROM products;

結果は5です。
または一ヶ月は30日で考えるともっと細かい結果出せます

SQL

1SELECT DATEDIFF(CURRENT_DATE,created)/30 FROM products;

結果は5.6です。

投稿2016/01/26 06:05

ToniVaquer

総合スコア146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

算出のためのルールが曖昧すぎます。

基準日(2015-08-11 11:12:53)と 2016-01-26(00:00:00) の差は、5ヶ月と14日、12時間47分7秒です。
これを 6 と返す根拠(ルール)はどうなりますか?

5ヶ月を1秒でも多ければ 切り上げて 6 とするのか、また、基準日の時刻は考慮せず、2015-08-11 00:00:00 と 2016-01-26 00:00:00 で比較するとか…

幾つかケースをあげてどういう値を返したいのかを明確にしてください。

  1. 2015-08-11 11:12:53 と 2016-01-11 11:12:53
  2. 2015-08-11 11:12:53 と 2016-01-11 00:00:00
  3. 2015-08-11 11:12:53 と 2016-01-11 11:13:00
  4. 2015-08-11 11:12:53 と 2016-01-12 00:00:00
  5. 2015-08-11 11:12:53 と 2016-01-12 11:12:53

など。

投稿2016/01/26 05:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/26 05:43

3. 2015-08-11 11:12:53 と 2016-01-11 11:13:00 になります、 2015-08-11 と 2016-01-11 の部分の月の差分です。 失礼しました、差分が5ヶ月なので、5が返り値です。
退会済みユーザー

退会済みユーザー

2016/01/26 05:51 編集

答えになっていないんですけど…少なくとも列挙した5つの場合、それぞれ求めたい値を全て回答してください。 または、2015-08-11 11:12:53 に対して 5 が返ってくる日付の最小値と最大値を提示すれば明確な定義になりませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問