2017-01-20 13 views
0

私はcronジョブで自動化する必要がある自動請求処理を1つ持っています。私はデータベースをチェックインすることができる照会を作成したいと思うautobillingかnoのための支払準備ができている。ここでMySQL:将来の内部クエリで1ヶ月または1年を確認してください

はテーブルです:

id user_id  client_id payment_id      save_details auto_billing price plan created  active 
3 1   1   PAY-xxxxxxxxxxxxxxxxxxxxxxxx 0    1    10  M  1484576988 2 
7 1   1   PAY-yyyyyyyyyyyyyyyyyyyyyyyy 1    1    10  M  1484945652 1 
4 1   2   PAY-ssssssssssssssssssssssss 0    1    10  M  1484594351 1 
6 1   15   PAY-tttttttttttttttttttttttt 0    1    96  Y  1484615360 1 

そして、私の現在のクエリ:私は​​がMあるかどうかを確認し、created 1月に追加することができますどのように

か:

SELECT 
    COUNT(`p`.`auto_billing`) AS `total` 
FROM 
    `payment` `p` 
WHERE 
    `p`.`auto_billing` = 1 
AND 
    `p`.`active` = 1 

質問ですYを追加してcreatedを+1してください。PHPの現在のタイムスタンプを確認して自動請求を開始できますg?

私はどういうわけかcreatedフィールドを月の1月の将来の予想時間に変換する必要があります。これは、変数​​によって決まります。

私は完全なテーブルを変更したいと思いますが、システムはすでに7000レコードのarroundを持っており、何か混乱させたくありません。

ありがとうございます!

+0

使用ケースとDATE_ADD –

答えて

1

だけDATE_ADDと、条件式を使用します。

SELECT UNIX_TIMESTAMP(IF(plan='M', DATE_ADD(FROM_UNIXTIME(created), INTERVAL 1 MONTH), DATE_ADD(FROM_UNIXTIME(created), INTERVAL 1 YEAR))) from payment 

このSQLが作成し、適切な間隔に追加されます。このような条項は、WHEREでクエリを試してみてください。

+0

よく、少し複雑に見えます) –

+0

は完璧です。 –

1

ルックアップFROM_UNIXTIME()

 FROM_UNIXTIME(created) <= NOW() + INTERVAL 1 YEAR 

か、この1:

 FROM_UNIXTIME(created) <= NOW() + INTERVAL 1 MONTH 
関連する問題