
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
2つ目のレコードの値を取得す...
-
ADOでNullフィールドの抽出
-
Access VBA 添付型フィールド
-
Accessの画像挿入のVBAコード
-
Access 追加クエリについて
-
Access :ALTER TABLE で作成...
-
クリスタルレポート(8.5)の書式...
-
AccessVBAで他テーブルのデータ...
-
クリスタルレポートで困ってい...
-
NULLを含む文字列の結合で...
-
DataTableに特定のフィールドが...
-
VBA 変数名に変数を使用したい。
-
Redim とEraseの違いは?
-
VB.NETにて、構造体へデータを...
-
『列名 '担当者CD' があいま...
-
VB6.0の「vbFromUnicode」はVB....
-
VB.NETでのAccessテーブルリンク
-
MDBをADO接続でINSERT・UPDATE...
-
[C#] DataGridViewでコンボボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
2つ目のレコードの値を取得す...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
DataTableに特定のフィールドが...
-
日付と文字列を条件としてDLook...
-
Access 2010で実行時エラー3061
-
AccessのDAOでフィールド名を配...
-
ADOでNullフィールドの抽出
-
NULLを含む文字列の結合で...
-
Access VBA 添付型フィールド
-
ACCESSで視覚的タイムテーブル...
-
クリスタルレポートの式フィー...
-
ACCESSデータベースにV...
-
テーブルのデータ型の変更がで...
-
criteria の読み方
-
Access クエリで変数を参照する...
-
ACCESSで日別集計をする場合
おすすめ情報