none
tablo alanı format değişikliği RRS feed

  • Soru

  • Merhabalar,

    ms sql server 2005 üzerinde mevcut bir tabloya ait alanın formatını nasıl değiştirebilirim?

    Şöyle ki:

    oracle sql server'dan ms sql servere linked server tanımlı. Oracle'daki veriyi ms sql server'a ait STATISTICS_OVIS tablosuna kaydediyorum.

    Tablo adı: STATISTICS_OVIS

    tablo alanları;

    [id] [int] IDENTITY(1,1) NOT NULL,
    [MSC] [nvarchar](255) NOT NULL,
    [WRITE_TIME] [datetime] NOT NULL, .....

    Bu durumda WRITE_TIME alanı, [datetime] tipinde dd.MM.yyyy hh:mm şeklinde görünmekte.

    Bu alanın [nvarchar](255) tipinde dd.MM.yyyy formatına dönüştürüp update etmem gerekmekte.

    Nasıl yapabilirim? Yardımlarınız için şimdiden teşekkür ederim, Saygılarımla...

    14 Mayıs 2014 Çarşamba 20:11

Yanıtlar

  • Barış Bey ve Ekrem Bey ilginiz ve verdiğiniz cevaplar için öncelikle teşekkür ederim.

    Sorunun içerisinde de belirttiğim üzere ms sql server 2005 kullanıyorum. Dolayısıyla 2005 sql server'da datetime veri tipi mevcut. 2008 sql server 'dan itibaren date ve time veri tipleri mevcut.

    Problemi şu şekilde çözdüm: (Benzer sorunları yaşayacak arkadaşlara fikir verebileceği için paylaşıyorum.)

    stored procedure içerisine,

    insert into STATISTICS_OVIS (MSC,WRITETIME,...)

    select  (MSC,CONVERT(nvarchar(255), WRITE_TIME, 104),...)

    from OPENQUERY (linker_Server_Adi, 'select * from oracle_serverdaki_tablo_adi')

    yazdım.

    Ayrıca sql server 2005 üzerine bulunan STATIC_OVIS tablosunun WRITE_TIME alanının veritipini de varchar(10) yaptım.

    Gayet başarılı ve hızlı bir şekilde işlemektedir. Saygılarımla...

    • Yanıt Olarak İşaretleyen Tuna KOÇ 16 Mayıs 2014 Cuma 12:39
    16 Mayıs 2014 Cuma 12:38

Tüm Yanıtlar

  • Kısacası,

    tablodaki WRITE_TIME alanı, nvarchar olacak şekilde dd.MM.yyyy şeklinde olacak. (Saat kısmı olmayacak).

    Mss sql server dili İngilizce.

    Üstadlar yardım edecek kimse yok mu? Saygılar... 

    15 Mayıs 2014 Perşembe 05:54
  • Bir şey sormak istiyorum. Sadece dd.MM.yyyy olarak tutacaksanız, tipini neden date olarak değiştirmiyorsunuz ?

    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Bana Ulaşmak İçin: Mail Gönder

    15 Mayıs 2014 Perşembe 06:10
  • Neden ısrarla NVARCHAR'a dönüştürmek istiyorsun bahsettiğin alanı?

    Barış'ın dediği gibi sadece DATE değerini kullanmak istiyorsan ve SQL Server Instance'ının versiyonu da 2008'den yukarıysa DATE veritipini kullanabilirsin.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    15 Mayıs 2014 Perşembe 16:16
  • Barış Bey ve Ekrem Bey ilginiz ve verdiğiniz cevaplar için öncelikle teşekkür ederim.

    Sorunun içerisinde de belirttiğim üzere ms sql server 2005 kullanıyorum. Dolayısıyla 2005 sql server'da datetime veri tipi mevcut. 2008 sql server 'dan itibaren date ve time veri tipleri mevcut.

    Problemi şu şekilde çözdüm: (Benzer sorunları yaşayacak arkadaşlara fikir verebileceği için paylaşıyorum.)

    stored procedure içerisine,

    insert into STATISTICS_OVIS (MSC,WRITETIME,...)

    select  (MSC,CONVERT(nvarchar(255), WRITE_TIME, 104),...)

    from OPENQUERY (linker_Server_Adi, 'select * from oracle_serverdaki_tablo_adi')

    yazdım.

    Ayrıca sql server 2005 üzerine bulunan STATIC_OVIS tablosunun WRITE_TIME alanının veritipini de varchar(10) yaptım.

    Gayet başarılı ve hızlı bir şekilde işlemektedir. Saygılarımla...

    • Yanıt Olarak İşaretleyen Tuna KOÇ 16 Mayıs 2014 Cuma 12:39
    16 Mayıs 2014 Cuma 12:38