Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
登録日から1ヶ月経っているデータの抽出について
投稿日時: 19/03/18 23:30:00
投稿者: hay.hide

クエリに登録日フィールドがあります。
毎月1日に登録日から1ヶ月経過したレコードを抽出したいのですが
どのように演算を組んだらよいか四苦八苦しています。
 
Between And 演算子をつかうのでしょうか。。。
 
よろしくお願いします。

回答
投稿日時: 19/03/19 08:34:23
投稿者: よろずや

登録日フィールドの抽出条件に
<DateSerial(Year(Date), Month(Date) - 1, 1)
です。

回答
投稿日時: 19/03/19 10:20:47
投稿者: Suzu

hay.hide さんの引用:
毎月1日に登録日から1ヶ月経過したレコードを抽出したい

 
1日にこだわらず、登録日から一か月以上経過した レコードの抽出で良いでしょうか?
 
であれば、すでに よろずやサンから回答がついています。
 
DATESERIALの他には、DATEADD関数を使っても良いでしょう。
DateAdd("m",-1,DATE())
 
 
ではなく、「1日」に 計算基準があるのであれば、また変わってくる事になります。
その場合は、例を含めて提示ください。

投稿日時: 19/03/19 15:31:55
投稿者: hay.hide

言葉足らずですみません。
 
やりたいことは
 
とあるサービスについての顧客情報があって
 
登録日から1ヶ月経ったら、本登録の案内を出したいのです。
 
毎日やるのも面倒なので、どこかで抽出日を決めないとだめですかね?
 
単純に登録日から1ヶ月以上のデータを抽出するとすると
次回も重複データが発生してしまうことがネックになっています。
前回抽出したものは除くことなどはできるのでしょうか?
 
何か、いい考えはないでしょうか?
 

回答
投稿日時: 19/03/19 15:53:59
投稿者: sk

引用:
とあるサービスについての顧客情報があって
  
登録日から1ヶ月経ったら、本登録の案内を出したいのです。

引用:
単純に登録日から1ヶ月以上のデータを抽出するとすると
次回も重複データが発生してしまうことがネックになっています。
前回抽出したものは除くことなどはできるのでしょうか?

そういう目的であれば、単に[登録日]に対する
範囲条件によってレコードを抽出するだけではなく、
それぞれの顧客に『本登録の案内』を発送した際に
その発送履歴をレコードとして記録するようにした上、
「既に発送したか否か」を判別する必要があるのでは。

回答
投稿日時: 19/03/19 16:08:15
投稿者: よろずや

登録日フィールドの抽出条件に
Between DateSerial(Year(Date), Month(Date) - 2, 1) And DateSerial(Year(Date), Month(Date) - 1, 0)
です。

投稿日時: 19/03/19 20:06:08
投稿者: hay.hide

頂いた数式を抽出条件に入れまと、
 
「抽出条件でデータ型が一致しません」というエラーメッセージが出てきてしまいます。
 
数式を抽出条件にコピペしますと
 
Between DateSerial(Year("Date"),Month("Date")-2,1) And DateSerial(Year("Date"),Month("Date")-1,0)
 
となってしまいます。
 
  "Date" の部分がおかしいのでしょうか?
 

回答
投稿日時: 19/03/20 06:40:34
投稿者: よろずや

"Date"

Date

投稿日時: 19/03/20 07:16:42
投稿者: hay.hide

Dateと入力しても、入力確定後は "Date" となってしまうのですが。

回答
投稿日時: 19/03/20 08:41:12
投稿者: よろずや

よろずや さんの引用:
"Date"

Date
"Date"

Date()

投稿日時: 19/03/20 22:46:15
投稿者: hay.hide

できました!
 
ありがとうございました!