Tingkatkan pengiraan tarikh menggunakan operator AND
P粉554842091
P粉554842091 2024-03-22 12:11:14
0
1
349

Saya pasti ini adalah penyelesaian yang mudah tetapi saya tidak dapat menemuinya di mana-mana. Saya cuba menggunakan DAN untuk mempengaruhi hasil pertanyaan. Pertanyaannya adalah seperti berikut.

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened;

Jadi pertanyaan pertama berfungsi dengan baik. Ia hanya memberi saya baris di mana tarikh log_in adalah kurang daripada tarikh_dibuka dan kemudian jumlah perbezaan hari antara kedua-duanya, yang sangat bagus. Walau bagaimanapun, saya ingin menambah DAN pada pertanyaan untuk mengecualikan jumlah tertentu. Contohnya, contoh berikut:

select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
from table1
where log_in < date_opened and date_diff > 1;

Masalahnya ialah lajur alias date_diff tidak dikenali sebagai lajur sebenar, jadi saya mendapat mesej ralat. Saya cuba menggunakan HAVING dan bukannya DAN, tetapi itu tidak berfungsi (bukan seperti yang saya fikirkan). Saya pada asasnya mahu mengecualikan baris dengan sifar. Adakah sesiapa tahu apa yang saya akan gunakan dan bukannya "dan date_diff > 1"?

P粉554842091
P粉554842091

membalas semua(1)
P粉308089080

Ulang ungkapan dalam klausa where (iaitu gunakan datediff(log_in, date_opened) > 1 而不是 date_diff > 1), atau gunakan jadual terbitan dan kemudian tambahkan syarat dalam pertanyaan yang dilampirkan.

Contoh menggunakan jadual terbitan:

select first_name, log_in, date_opened, date_diff
from (
    select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff
    from table1
    where log_in  1
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan