Forum

Saat Formatı Dö...
 
Bildirimler
Hepsini Temizle

Saat Formatı Dönüştürme

11 Yazılar
5 Üyeler
0 Reactions
3,817 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Merhabalar.

SQL2005 de bulunan veritabanımızdan çalışan programımıza saat formatında kayıt yapıyoruz. Fakat bu saat formatı veritabanında sayı formatında yazmaktadır. Sqlinfo ile bu tablodaki sayıyı tekrar saat formatına çevirip rapora yansıtmam gerekiyor. Bununla ilgili önerilerinizi bekliyorum. Teşekkürler.

Kolay gelsin.

 
Gönderildi : 03/05/2011 19:49

(@ahmetaltuntas)
Gönderiler: 731
Prominent Member
 

merhaba

sayı formatından bir örnek verebilirmisiniz.

Şuanki field 'daki deger nasıl?

 
Gönderildi : 03/05/2011 23:43

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Saat formatının veritabanında illa sayı olarak tutulması zorunlu mu?

 
Gönderildi : 04/05/2011 02:13

(@ugurinal)
Gönderiler: 145
Estimable Member
 

http://www.mssqltips.com/tip.asp?tip=1744  adresini inceleyebilirsiniz.

 
Gönderildi : 04/05/2011 02:32

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

merhaba

sayı formatından bir örnek verebilirmisiniz.

Şuanki field 'daki deger nasıl?

16:57:04 giriyorum veritabanına 272172053 olarak kaydediyor.

Saat formatının veritabanında illa sayı olarak tutulması zorunlu mu?

Paket program kullandığımız için programdan girilen saat veritabanına otomatik sayı formatında atıyor. Yani veritabanına biz müdahale edemiyoruz.

http://www.mssqltips.com/tip.asp?tip=1744  adresini inceleyebilirsiniz.

Gönderilen dökümanı inceledim. Burada saat ile ilgili kolonların ALTER edilmesiyle ilgili örnekler. Fakat ben direk veriyi sqlinfo ile çektikten sonra saat formatına dönüştürmek istiyorum. Yani sqlinfoda sorunum yok ama veritabanından geldiği için bilgi sayı formatında atıyor. Anlatabilmişimdir umarım. Teşekkürler.

 

 

 
Gönderildi : 04/05/2011 16:31

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

http://www.sqlservercentral.com/Forums/Topic656902-338-1.aspx#bm656914


Burayı inceleyebilirsiniz ancak o tarihin veritabanına hangi algoritmada yazıldığını bilmeden decode işlemi kolay değil. Girilen saat verisinin saniyelerini toplayıp sayı olarak yazmak gibi basit bir yöntem olsa decode kodu yazılabilir ama öyle de değil gibi görünüyor. Belki milisaniye bilgisi de kaydediliyordur. Ona dikkat ettiniz mi? Bir de dönüşüm sql server tarafında sp'lerle yapılıyor olabilir bir ihtimal; orayı gözden geçirmek gerekebilir. En sağlıklı çözüm yazılım üreticisi ile görüşüp dönüşüm işleminin hangi algoritma ile yapıldığını sormak olacaktır.

 
Gönderildi : 04/05/2011 17:49

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Yazılımı yapan kişilerle görüştüm bana aşağıdaki sorguyu verdiler ama bu formüldeki rakamlar nerden geliyor anlayamıyorum. Anlayan varsa yazabilirmi lütfen?

 --------------------------

ALTER FUNCTION [dbo].[LG_INTTOTIME](@LDATE INT)
RETURNS VARCHAR(12)
AS
BEGIN
DECLARE @TIME DATETIME,
@HH INT,
@MM INT,
@SS INT,
@TIMESTR VARCHAR(12),
@RETSTR VARCHAR(12)
SELECT @HH = (@LDATE-(@LDATE%65536))/65536/256
SELECT @MM = ((@LDATE-(@LDATE%65536))/65536-((@LDATE-
(@LDATE%65536))/65536/256)*256)
SELECT @SS = (((@LDATE%65536)-((@LDATE%65536)%256))/256)
SELECT @TIMESTR = CAST(@HH AS VARCHAR(2))+':'+
CAST(@MM AS VARCHAR(2))+':'+
CAST(@SS AS VARCHAR(2))
SELECT @TIME = CONVERT(DATETIME,@TIMESTR,101)
SELECT @RETSTR = CONVERT(VARCHAR,@TIME,108)
RETURN(@RETSTR)
END
SELECT (DBO.LG_INTTOTIME(256))

--------------------------

buna göre ;

Saat için:  (272172053-(272172053*0.000065536))/65536/256   =16

Dakika için:  ((272172053-(272172053*0.000065536))/65536-((272172053-(272172053*0.000065536))/65536/256)*256)   Yanlış geliyor.

 vb.

 
Gönderildi : 05/05/2011 20:01

(@orhanakdogan)
Gönderiler: 311
Reputable Member
 

Merhaba,

SELECT

(DBO.LG_INTTOTIME(272172053)) sorgusu 16:57:04 sonucunu yani doğru sonucu veriyor, bir sorun yok.

manuel hesaplarken % işlemini bölme olarak kullanmışsınız oysa bu "mod" dur, kalanı verir.Ör: 4%3 =1 dir.

65536 sayısı 2 üzeri 16 dır.

kolay gelsin..

 
Gönderildi : 06/05/2011 02:38

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Fonksiyon tam Orhan'lıkmış zaten

 
Gönderildi : 06/05/2011 03:46

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Merhaba,

SELECT

(DBO.LG_INTTOTIME(272172053)) sorgusu 16:57:04 sonucunu yani doğru sonucu veriyor, bir sorun yok.

manuel hesaplarken % işlemini bölme olarak kullanmışsınız oysa bu "mod" dur, kalanı verir.Ör: 4%3 =1 dir.

65536 sayısı 2 üzeri 16 dır.

kolay gelsin..

Valla ben yine anlamadım. Başka alanlarda kullanmak üzere manuel hesaplamam yapmam gerekiyor. Mesela:

272172053%65536=? (Kaç olmalı)

 
Gönderildi : 09/05/2011 16:02

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

272172053 sayısının 65536 sayısına bölümünden kalan kaç ise onu verir yani 1045 verir.

 
Gönderildi : 10/05/2011 00:42

Paylaş: