![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
No.2ベストアンサー
- 回答日時:
>ただ、今確認したら、桁数を指定していませんでした。
>基本的に入力自体はそれ以上の桁数は入れられないようになっているのですが、>月が一桁の場合はこれだと対応できませんでした。
月が数値型なら、桁数は関係なく#1さんのやり方でできそうなきがするのですが。
2002, 1
2002*100+1 = 200200+1 = 200201
2001, 12
2001*100+12 = 200100+12 = 200112
2001, 8
2001*100+8 = 200100+8 = 200108
2000, 11
2000*100+11 = 200000+11 = 200011
具体的にはどのような不具合があるのでしょうか?
「本日日付※ / 100 」の部分は小数を切り捨てた方がよさそうです。
ちなみに、フィールド側に式を記述するのは、速度的には良くないので、次のように記述した方がその点は改善できます。
WHERE
(年 > 切り捨て(本日日付 / 10000) - 3)
OR
((年 = 切り捨て(本日日付 / 10000) - 3) AND (月 > (切り捨て(本日日付 / 100) - 切り捨て(本日日付 / 10000) * 100))))
・DBMSが不明なので、切り捨て関数は適切なものに置き換えて下さい。
ご丁寧な説明ありがとうございます。
本日日付とデータを混同しており、完全に勘違いしていました。よく考えたらそうでした。問題なく動作しました。
ちなみに
>フィールド側に式を記述するのは、速度的には良くないので
とはどういうことでしょうか?
#1様の回答より、rotesKomet様から教えていただいた、下部分の記述の方が動きが早いという事でしょうか?
もしよろしかったらお教えいただければ幸いです。
DBはMySQLでphpを使用したwebアプリケーションです。
No.3
- 回答日時:
>>フィールド側に式を記述するのは、速度的には良くないので
>#1様の回答より、rotesKomet様から教えていただいた、下部分の記述の方が動きが早いという事でしょうか?
もしよろしかったらお教えいただければ幸いです。
レコード件数が少ないときはそれほど変わりませんが、多くなると速度に差が出てくる可能性があります。
フィールド側に式を記述すると、100万件のレコードが存在すれば、その100万件全てに対して計算を行ってから条件の比較を行います。
条件の値側で計算すれば、レコード件数に関わらず100回です(条件との比較は100万件ですが)。
また、インデックスの設定されたフィールドに対して計算を行った結果を使用すると、インデックスの効果はなくなります。
わざわざ説明いただきありがとうございます。
なぜそちらの方が動作が速いのかよく分かりました。
ちなみに現在年、現在月をとって比較する形に落ち着きました。
(年 > (現在年 - 3)) or ((年 = (現在年 -3)) and (月 > 現在月))
一旦データの数値を年月日形式に置き換えて比較するイメージだったのでこんな簡単にできて大変助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access 追加クエリについて
-
INT64対応のprintf系関数はあり...
-
日付と文字列を条件としてDLook...
-
DataTableに特定のフィールドが...
-
2つ目のレコードの値を取得す...
-
Access 2010で実行時エラー3061
-
AccessVBAで他テーブルのデータ...
-
ACCESS VBA Parametersで or演...
-
ACCESSで視覚的タイムテーブル...
-
アクセスでADO 並べ替えが適用...
-
c言語で自分のホームディレク...
-
アクセス ADO Null以外のレコ...
-
SQLで複数のテーブルと結合した...
-
AccessのDAOでフィールド名を配...
-
Accessのフィールド名に半角括...
-
DataGridViewでのデータ抽出に...
-
VBA 変数名に変数を使用したい。
-
コンボボックスのインデックス...
-
構造体配列の特定のメンバーをF...
-
VBとアクセスでSQL文に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
クリスタルレポートで困ってい...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
Access 2010で実行時エラー3061
-
INT64対応のprintf系関数はあり...
-
テーブルのデータ型の変更がで...
-
AccessのDAOでフィールド名を配...
-
日付と文字列を条件としてDLook...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
Access VBA 添付型フィールド
-
Access クエリで変数を参照する...
-
Accessの画像挿入のVBAコード
-
NULLを含む文字列の結合で...
-
SQLで複数のテーブルと結合した...
-
ACCESSで視覚的タイムテーブル...
-
ACCESSデータベースにV...
-
オートナンバー型を抽出条件に...
おすすめ情報