none
View oluştururken datetime hatası RRS feed

  • Soru

  • Merhabalar,

    Ben veritabanımda view oluştururken 3. satırda aşağıdaki hatayı alıyorum

    "The data types datetime and time are incompatible in the add operator."

    Kodlarım şu şekilde:

    CREATE VIEW dbo.VWVARDSTOKSATIS
    AS
    SELECT        dbo.TBLSTOKHAR.STOKKODU, dbo.TBLSTOKHAR.MIKTAR, dbo.TBLSTOKHAR.TARIH + dbo.TBLFATURALAR.SAAT AS TARIH, dbo.TBLSTOKLAR.STOKADI
    FROM            dbo.TBLSTOKHAR INNER JOIN
                             dbo.TBLFATURALAR ON dbo.TBLSTOKHAR.FATURANO = dbo.TBLFATURALAR.FATURANO INNER JOIN
                             dbo.TBLSTOKLAR ON dbo.TBLSTOKHAR.STOKKODU = dbo.TBLSTOKLAR.STOKKODU
    WHERE        (dbo.TBLSTOKHAR.TIPI = 'P')
    Bu kodu diğer veritabanındaki viewdan aldım. Yeni bir veritabanı oluşturmak için general script kullandığımda bu hatayı alıyorum. Yardımlarınız için teşekkürler.

    24 Ekim 2016 Pazartesi 08:27

Yanıtlar

  • Merhabalar,

    Datetime ve Time veritiplerini birleştirirken bu hatayı alabilirsiniz. View içinde aşağıdaki şekilde veri tiplerini dönüştürmeyi dener misiniz?

    CREATE VIEW dbo.VWVARDSTOKSATIS
    AS
    SELECT        dbo.TBLSTOKHAR.STOKKODU, dbo.TBLSTOKHAR.MIKTAR,
    CAST(CAST(CAST(dbo.TBLSTOKHAR.TARIH as date) as nvarchar(20)) + ' ' + CAST(dbo.TBLFATURALAR.SAAT as nvarchar(12)) as datetime)
     AS TARIH, dbo.TBLSTOKLAR.STOKADI
    FROM            dbo.TBLSTOKHAR INNER JOIN
                             dbo.TBLFATURALAR ON dbo.TBLSTOKHAR.FATURANO = dbo.TBLFATURALAR.FATURANO INNER JOIN
                             dbo.TBLSTOKLAR ON dbo.TBLSTOKHAR.STOKKODU = dbo.TBLSTOKLAR.STOKKODU
    WHERE        (dbo.TBLSTOKHAR.TIPI = 'P')
    
    
    

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    • Yanıt Olarak İşaretleyen StrazneK 26 Ekim 2016 Çarşamba 06:50
    24 Ekim 2016 Pazartesi 13:13

Tüm Yanıtlar

  • Tarih ve saati toplamaya çalışıyorsunuz.

    http://pgnchess.com
    http://dergikapaklari.com

    24 Ekim 2016 Pazartesi 08:41
  • Tarih ve saati toplamaya çalışıyorsunuz.

    http://pgnchess.com
    http://dergikapaklari.com

    Çalışan veritabanımda "2016-09-01 12:10:42.000" olarak sonuç çıkıyor. 0'dan veritabanı oluştururken hatayla karşılaşıyorum
    24 Ekim 2016 Pazartesi 08:47
  • Merhabalar,

    Datetime ve Time veritiplerini birleştirirken bu hatayı alabilirsiniz. View içinde aşağıdaki şekilde veri tiplerini dönüştürmeyi dener misiniz?

    CREATE VIEW dbo.VWVARDSTOKSATIS
    AS
    SELECT        dbo.TBLSTOKHAR.STOKKODU, dbo.TBLSTOKHAR.MIKTAR,
    CAST(CAST(CAST(dbo.TBLSTOKHAR.TARIH as date) as nvarchar(20)) + ' ' + CAST(dbo.TBLFATURALAR.SAAT as nvarchar(12)) as datetime)
     AS TARIH, dbo.TBLSTOKLAR.STOKADI
    FROM            dbo.TBLSTOKHAR INNER JOIN
                             dbo.TBLFATURALAR ON dbo.TBLSTOKHAR.FATURANO = dbo.TBLFATURALAR.FATURANO INNER JOIN
                             dbo.TBLSTOKLAR ON dbo.TBLSTOKHAR.STOKKODU = dbo.TBLSTOKLAR.STOKKODU
    WHERE        (dbo.TBLSTOKHAR.TIPI = 'P')
    
    
    

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    • Yanıt Olarak İşaretleyen StrazneK 26 Ekim 2016 Çarşamba 06:50
    24 Ekim 2016 Pazartesi 13:13
  • Merhabalar,

    Datetime ve Time veritiplerini birleştirirken bu hatayı alabilirsiniz. View içinde aşağıdaki şekilde veri tiplerini dönüştürmeyi dener misiniz?

    CREATE VIEW dbo.VWVARDSTOKSATIS
    AS
    SELECT        dbo.TBLSTOKHAR.STOKKODU, dbo.TBLSTOKHAR.MIKTAR,
    CAST(CAST(CAST(dbo.TBLSTOKHAR.TARIH as date) as nvarchar(20)) + ' ' + CAST(dbo.TBLFATURALAR.SAAT as nvarchar(12)) as datetime)
     AS TARIH, dbo.TBLSTOKLAR.STOKADI
    FROM            dbo.TBLSTOKHAR INNER JOIN
                             dbo.TBLFATURALAR ON dbo.TBLSTOKHAR.FATURANO = dbo.TBLFATURALAR.FATURANO INNER JOIN
                             dbo.TBLSTOKLAR ON dbo.TBLSTOKHAR.STOKKODU = dbo.TBLSTOKLAR.STOKKODU
    WHERE        (dbo.TBLSTOKHAR.TIPI = 'P')
    
    

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    3 tane cast ne için? sadece Cast(tarih as datetime)+Cast(saat as datetime) yeterli değil mi? 


    http://pgnchess.com
    http://dergikapaklari.com

    24 Ekim 2016 Pazartesi 13:36
  • Selamlar,

    Dediğiniz şekilde de yapılabilir ancak bu durumda her iki kolondaki saatlerin toplamı 24 saati geçerse tarih atlar, bir sonraki güne geçer. Bu yüzden verdiğim kod bloğunda önce date'e ardından birleştirdikten sonra datetime'a çevirerek gün artırmasının önüne geçmiş oldum. Bu yüzden iç içe CAST kullanarak dönüştürdüm.

    Tabii bu iş birimin ihtiyacına göre değişir. Eğer saatlerin toplanması sonucuna göre ertesi güne geçmesi gerekiyorsa bu durumda sizin verdiğiniz örnekteki gibi tek CAST işlemi ile ihtiyaç giderilebilir...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    24 Ekim 2016 Pazartesi 16:29
  • Merhabalar,

    Datetime ve Time veritiplerini birleştirirken bu hatayı alabilirsiniz. View içinde aşağıdaki şekilde veri tiplerini dönüştürmeyi dener misiniz?

    CREATE VIEW dbo.VWVARDSTOKSATIS
    AS
    SELECT        dbo.TBLSTOKHAR.STOKKODU, dbo.TBLSTOKHAR.MIKTAR,
    CAST(CAST(CAST(dbo.TBLSTOKHAR.TARIH as date) as nvarchar(20)) + ' ' + CAST(dbo.TBLFATURALAR.SAAT as nvarchar(12)) as datetime)
     AS TARIH, dbo.TBLSTOKLAR.STOKADI
    FROM            dbo.TBLSTOKHAR INNER JOIN
                             dbo.TBLFATURALAR ON dbo.TBLSTOKHAR.FATURANO = dbo.TBLFATURALAR.FATURANO INNER JOIN
                             dbo.TBLSTOKLAR ON dbo.TBLSTOKHAR.STOKKODU = dbo.TBLSTOKLAR.STOKKODU
    WHERE        (dbo.TBLSTOKHAR.TIPI = 'P')
    
    
    

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    Çok teşekkür ederim tip değiştirerek çalıştı.
    26 Ekim 2016 Çarşamba 06:50