Próbowałem tego zapytania poniżej, ale nadal zwraca dni, które miały -1 wartości. Chcę, aby klauzula where zwracała wiersze, które są 2 dni lub nowsze. Dzięki!
SELECT uniqueKey,(TO_DAYS(TimeStampColumn) - TO_Days(Now())) as "dayDiff"
FROM couponextractor.tblresults
where "dayDiff" >= 0
Odpowiedzi:
1 dla odpowiedzi № 1Ponieważ właśnie porównasz ciąg "daydiff"> = 0, który zawsze ma wartość 0 => true
Musisz pozbyć się cytatów i używać HAVING, a to bardzo nieefektywne zapytanie ... lepiej jest obliczyć datę wcześniej i po prostu użyć operatora> = w kolumnie.
HAVING dayDiff> = 0
Po prostu oblicz dokładną datę, a następnie po prostu zrób WHERE TimeStampColumn> = "XXXX-XX-XX AA: AA: AA", więc może być zoptymalizowany przez serwer, jeśli masz indeksy.
0 dla odpowiedzi nr 2
SELECT * FROM tbl WHERE datetime <NOW () - INTERVAL 2 DAY
0 dla odpowiedzi № 3
Dlaczego nie używasz funkcji MYSQL DATEDIFF?
SELECT uniqueKey,DATEDIFF(TimeStampColumn,Now()) as "dayDiff"
FROM couponextractor.tblresults
where DATEDIFF(TimeStampColumn,Now()) >= 1
Pomyśl, że to się spełni. Być może musisz rzucić TimeStampColumn.