catfan / Medoo

The lightweight PHP database framework to accelerate the development.
https://medoo.in
MIT License
4.83k stars 1.15k forks source link

Question about 'date'-Fields? #889

Closed omexlu closed 3 years ago

omexlu commented 4 years ago

Good evening,

I have a problem with the following query, I only want to change data sets that are not today.

This works (dateLastSubstract[<]):

// execute action $updatePharmacyCapacityCronjob = $db->update('pharmacy', [ "capacity[-]" => $getPharmacyDataCapacityCronjob['dosageTotal'], "dateLastSubstract" => date("Y-m-d H:i:S") ], [ "dateLastSubstract[<]" => Medoo::raw("DATE(CURDATE())") ]);

That doesn't work (dateLastSubstract[!]:

// execute action $updatePharmacyCapacityCronjob = $db->update('pharmacy', [ "capacity[-]" => $getPharmacyDataCapacityCronjob['dosageTotal'], "dateLastSubstract" => date("Y-m-d H:i:S") ], [ "dateLastSubstract[!]" => Medoo::raw("DATE(CURDATE())") ]);

Maybe you can give me some advice how I could solve this better or if there might even be a bug in the library:

Thanks in advance.

catfan commented 4 years ago

Maybe you can use

'dateLastSubstract[><]' => [date('Y-m-d', strtotime('-1 day')), date('Y-m-d', strtotime('+1 day'))]
// WHERE (`dateLastSubstract` NOT BETWEEN '2020-01-08' AND '2020-01-10')

Or

[
    "dateLastSubstract[>]" => Medoo::raw("DATE(CURDATE())"),
    "dateLastSubstract[<]" => Medoo::raw("DATE(CURDATE())")
]
omexlu commented 4 years ago

Thanks, I have solved the problem as follows:

$updatePharmacyCapacityCronjob = $db->update('pharmacy', [
                                                                   "capacity[-]" => $getPharmacyDataCapacityCronjob['dosageTotal'],
                                                                   "dateLastSubstract" => date("Y-m-d H:i:s")
                                                                   ], [
                                                                       "AND" => [
                                                                                "dateLastSubstract[<]" => Medoo::raw("DATE(CURDATE())"),
                                                                                "id" => $getPharmacyDataCapacityCronjob['id']
                                                                                ]
                                                                   ]);