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

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

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

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

PHP

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

Q&A

解決済

2回答

851閲覧

SQLの型について

ssk

総合スコア332

SQL

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

PHP

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

0グッド

0クリップ

投稿2017/03/26 08:51

PHPとMySQLを利用して

・金額の比較
・日付の比較
・時間の比較

を行いたいのですが、その際
登録するSQLの方は何が適していますか?

######登録しようしている型
金額の比較:int
(※カンマの取り扱いは実務ではどうなっているのでしょう、、)
日付の比較:datetime
時間の比較:time

間違っていましたら、ご指摘いただけると助かります。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

質問する前に検索して調べようとしないのは何故ですか?

Mysqlで金額を扱う場合の適当な型
http://d.hatena.ne.jp/yuji_13/20091129/1259502739

一般的な問題の 1 つとして、金額値の正確な表現があります。この場合、MySQL では、DECIMAL 型を使用すべきです。
http://dev.mysql.com/doc/refman/4.1/ja/choosing-types.html

投稿2017/03/26 09:14

galaxy

総合スコア14

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

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

ssk

2017/03/26 09:18

ありがとうございます。
guest

0

ベストアンサー

金額: int, bigint など。
カンマは含めない。php であれば、number_format() を使えば良い。

日付: date

時間: time

日付時間を分ける必要が特にないのであれば、datetime。

投稿2017/03/26 09:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ssk

2017/03/26 09:15

度々、ありがとうございます。 上記のように設定して進めてまいります。
退会済みユーザー

退会済みユーザー

2017/03/26 09:17

金額は decimal がいいでしょう。
退会済みユーザー

退会済みユーザー

2017/03/26 09:19

int にカンマを含めるかの問題って、試せばわかることです。入れようとしてもエラーになるということは確認していないのでしょうか?
ssk

2017/03/26 09:22

ありがとうございます。 intにカンマを入れて試し、エラーが出るので 調べた上、投稿いたしました。
退会済みユーザー

退会済みユーザー

2017/03/26 09:29 編集

エラーになるということは、できませんよということですよね? 質問の意図はなんだったのでしょう? カンマを無理矢理にでも入れる方法が知りたいということなのですか? 責めているわけでもなく、質問しなきゃいけない理由がわからないのです。
ssk

2017/03/26 09:29

はい。intにカンマをインサートできなかったため、、、 比較方法に最適な型が曖昧だったので、質問させていただきました。
退会済みユーザー

退会済みユーザー

2017/03/26 09:32

なるほど。 たとえば、カンマの入力ができたとしましょう。実際には、アンチパターンですが、varchar で、1,234 のような値を持っているとします。 group by で sum() 合計を出したいとか、平均値を出したいとか、SQLの便利機能を切り捨ててまでカンマを入れる必要があるでしょうか? また、コンピュータにとって、int と string(varchar)の処理はどちらが得意だと思います?
ssk

2017/03/26 09:43

>>>group by で sum() 合計を出したいとか、平均値を出したいとか、SQLの便利機能を切り捨ててまでカンマを入れる必要があるでしょうか? カンマは必要ないと思います。 >>>また、コンピュータにとって、int と string(varchar)の処理はどちらが得意だと思います? intの方が得意だと思います。 合っていますでしょうか?><
退会済みユーザー

退会済みユーザー

2017/03/26 09:48

そのとおりです。 PHPであれば number_format があるし、mysqlにも同様に FORMAT() が存在します。ただしその逆の関数は、存在していません。replaceでなんとかする方法はあるにはあるけど。 このことからも、そもそもカンマを入れて運用するということがナンセンスだから、逆の関数は必要ないわけですよね。 カンマが入ることでおかしなことになるSQLの例を挙げておきます。 SELECT '1,234' + '2,345'; SELECT GREATEST('10,230', '2,371', '9,000');
ssk

2017/03/26 09:52

例までありがとうございます。 とてもわかりやすく、勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問