cari

Rumah  >  Soal Jawab  >  teks badan

Tingkatkan pengiraan tarikh menggunakan operator AND

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粉554842091P粉554842091255 hari yang lalu334

membalas semua(1)saya akan balas

  • P粉308089080

    P粉3080890802024-03-23 10:52:05

    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 < date_opened
    )
    where date_diff > 1
    

    balas
    0
  • Batalbalas