• 21-11-2022, 14:31:17
    #1
    Merhaba Arkadaşlar,
    Aşağıda SQL Kodu bulunan sorguda "format code appears twice" hatası almaktayım, sql'de tabloya tarih "2022-08-19T14:14:33.560000+00:00 " olarak yansıyor, bu hatanın çözümü var mıdır?


    select pr_date,pr_free_text_4 from INACT.IN_PRO
    where pr_stat='2'
    and TO_DATE('2022-08-19T14:14:33.560000+00:00','yyyymmdd hh:mm:ss') <= sysdate
  • 21-11-2022, 14:40:02
    #2
    hocam doğru yol 24 saat formatını kullanmak yada varsayılan olarak 12am kullanman lazım
    24 saat formatı için örnek:
    SELECT TO_TIMESTAMP('20221121 00:00:00', 'yyyymmdd hh24:mi:ss') my_tmstamp FROM dual;
  • 21-11-2022, 14:41:52
    #3
    OpenBSD adlı üyeden alıntı: mesajı görüntüle
    hocam doğru yol 24 saat formatını kullanmak yada varsayılan olarak 12am kullanman lazım
    24 saat formatı için örnek:
    SELECT TO_TIMESTAMP('20221121 00:00:00', 'yyyymmdd hh24:mi:ss') my_tmstamp FROM dual;
    Hocam cevap için teşekkür ederim öncelikle, bana gelen date formatı "2022-08-19T14:14:33.560000+00:00" bu şekilde geliyor bunu çevirmeye çalışıyorum ama hata alıyorum sürekli.

    select pr__date,pr_text_4 from INACT.IN_PRO
    where pr_stat='2'
    and to_date('2022-08-19T14:14:33.560000+00:00','yyyymmdd') <= sysdate

    şimdi bunu denedim bu seferde "not a valid month" hatası verdi.
  • 21-11-2022, 14:50:57
    #5
    heykelog adlı üyeden alıntı: mesajı görüntüle
    Hocam cevap için teşekkür ederim öncelikle, bana gelen date formatı "2022-08-19T14:14:33.560000+00:00" bu şekilde geliyor bunu çevirmeye çalışıyorum ama hata alıyorum sürekli.

    select pr__date,pr_text_4 from INACT.IN_PRO
    where pr_stat='2'
    and to_date('2022-08-19T14:14:33.560000+00:00','yyyymmdd') <= sysdate

    şimdi bunu denedim bu seferde "not a valid month" hatası verdi.
    hocam DB incelemem lazım fakat şimdiki problemin
    hatayı gidermek ve doğru ay değerini kullanmak için SQL 'ni güncellemen gerekmekte

    SELECT TO_DATE('21-NOV-2022') FROM dual;

    Değer doğruysa ve hatayı almaya devam ediyorsan bunun nedeni girdiğiniz biçim olabilmektedir.
    TO_DATE, giriş değeriyle birlikte bir biçim girmenize olanak tanımaktadır. Biçim, diğer bazı işlevler gibi çıktı değerini değil, girdi değerinin ne olduğunu yansıtmaktadır
    Çıktı değeri her zaman bir TARİH'tir, dolayısıyla bir biçime ihtiyacı bulunmamaktadır. Giriş değerinin bir biçime ihtiyacı vardır.

    Ay için "NOV" veya 11 gibi geçerli bir değer girdiyseniz, biçiminiz giriş değeriyle eşleşmeyebilir.

    çözüm:
    Ya giriş değerini formatla eşleşecek şekilde güncelleyin ya da formatı giriş değeriyle eşleşecek şekilde güncellemenizi öneririm
    SELECT TO_DATE('21-NOV-2022', 'DD-MON-YYYY') FROM dual;

    bu yazdıklarım sanırım sorunu çözecektir
  • 21-11-2022, 14:53:19
    #6
    Hocam buna baktım ama işimi görmedi, bir şeyleri daha düzelttim bu seferde "literal does not match format string" uyarısını verdi, sanırım gelen datenin ilk 10 karakterini alırsam çözülecek gibi ama emin de değilim
  • 21-11-2022, 15:48:02
    #7
    OpenBSD adlı üyeden alıntı: mesajı görüntüle
    hocam DB incelemem lazım fakat şimdiki problemin
    hatayı gidermek ve doğru ay değerini kullanmak için SQL 'ni güncellemen gerekmekte

    SELECT TO_DATE('21-NOV-2022') FROM dual;

    Değer doğruysa ve hatayı almaya devam ediyorsan bunun nedeni girdiğiniz biçim olabilmektedir.
    TO_DATE, giriş değeriyle birlikte bir biçim girmenize olanak tanımaktadır. Biçim, diğer bazı işlevler gibi çıktı değerini değil, girdi değerinin ne olduğunu yansıtmaktadır
    Çıktı değeri her zaman bir TARİH'tir, dolayısıyla bir biçime ihtiyacı bulunmamaktadır. Giriş değerinin bir biçime ihtiyacı vardır.

    Ay için "NOV" veya 11 gibi geçerli bir değer girdiyseniz, biçiminiz giriş değeriyle eşleşmeyebilir.

    çözüm:
    Ya giriş değerini formatla eşleşecek şekilde güncelleyin ya da formatı giriş değeriyle eşleşecek şekilde güncellemenizi öneririm
    SELECT TO_DATE('21-NOV-2022', 'DD-MON-YYYY') FROM dual;

    bu yazdıklarım sanırım sorunu çözecektir
    Hocam öncelikle teşekkür ederim vakit ayırdığın için, Bana gelen veri tam olarak bu "2022-08-19T14:14:33.560000+00:00 " buna göre date formatına çevirmeye çalışıyorum ben, örnek veriyorum şöyle bir sorgu yazmak istiyorum, "2022-08-19T14:14:33.560000+00:00 tarihinden son bir gün içerisindeki tüm kayıtları getir." ama dediğiniz gibi bu değer tarih formatına uyum sağlamadığı için hata alıyorum, bu gelen değeri değiştirmeden tarih formatına nasıl uyum sağlanabiliri araştırıyorum.