firebird'de timestamp sahanın x dak. öncesini veren komut?

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
oquz

firebird'de timestamp sahanın x dak. öncesini veren komut?

Mesaj gönderen oquz »

firebird'de timestamp sahanın x dak. öncesini veren komut nedir?

örnek :
saha adı : zaman
tip : timestamp
veri : 11.11.2005 18:34:00

istediğim komutla 11.11.2005 18:32:00'ı getirmek istiyorum mesela.

aşağıdaki gibi bir komut olmalı:
select incMinute(zaman,-2) from tablename;
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

encodetime , decodetime rutinlerini bir incele bence
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şu komutu kullanabilirsiniz:

SELECT ZAMAN, ZAMAN - 2 * 0.000694444444444444444 AS ZAMAN_2 FROM TABLENAME

(2 dakika öncesini verir)

Burada 0.000694444444444444444 aslında 1 / (24 * 60) ' a karşılık geliyor. FireBird'de bir günün sayısal karşılığı 1' dir. Yani:

SELECT ZAMAN + 1 FROM TABLENAME

ZAMAN'ın bir gün sonrasını verir.

İyi çalışmalar.
oquz

bu iş için yazılmış bir komut yok mu

Mesaj gönderen oquz »

öncelikle teşükkürler

bahadir'a; encode olayına girersek işi çok uzatırız.

hakan'a;zamandan 0.00069444 çıkarmayı ben de düşündüm, doğrusu da o zaten ama küsüratın sonsuzluğundan dolayı sorun çıkabilir gibime geliyor.
zamandan 1/1440 çıkarayım dedim ama firebird 1/1440'ı 0 (sıfır) olarak döndürüyor. bu da başka muhabbet. bununla ilgili başka bir topic açayım.
bu arada 1 eklemenin 1 gün arttıracağını biliyorum tabi, ama benim işim dakika ile.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Zaten biliyormuşsun.

0.0006944444444'ün sorun çıkartmaz. Herhalde Trilyonlarca dakika öncesi veya sonrasını hesaplamayacaksındır. Ki yine de sorun çıkartmayacaktır.

1/1440 la ilgili sorun FireBird'ün BUG'ı. Normalde onu kullanmak lazım.

İyi çalışmalar.
oquz

firebird dakka bir gol bir

Mesaj gönderen oquz »

öncelikle teşekkürler;

işlemciler küsüratlı işlemlerde zayıf, ayrıca sonlu küsüratlı birşeyler çıkıyor, küsüratı bir yerde kesip sayıyı öyle kullanmak, bunun kesinlikle sorun çıkarmayacağını ya da kesinlikle sorun çıkaracağını söylemek benim için çok zor. sen çok emin konuşuyorsun bence biraz sisli orası.

bu arada firebird kullandığım ilk projemdi, ama 1/x işlemini firebird'un yapamadığını görmek artı date time fonksiyonlarının yetersiz olduğunu görmek, beni dereyi geçerken at değiştirmek zorunda bırakacak.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

Kod: Tümünü seç

select 1/1440 as deneme from rdb$database
şeklinde kullanımda 0 sonucu dönmüyor. Gerçi benim deneme yaptığım bilgisayarımda ib 6.0 yüklü.
oquz

1/1440 olayını çözdük

Mesaj gönderen oquz »

bende firebird 1.5

1/1440 olayını çözdük.

1.0/1440.0000 vb kullanırsan oluyor

ama bu benim esas sorunumu çözmedi tabi
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

kullanım alanın ne peki? yani bunu eğer bir grid içerisinde kullanıyorsan yada raporlama alanında kullanıyosan encode ve decode işlemi benim işimi görüyor seninde görmeyeceğini düşünmüyorum.
oquz

konu şu

Mesaj gönderen oquz »

konu şu;

outlookdaki hatırlatıcı olayı gibi;

zaman şu diyeceğim ve beni 5 dakka önce uyar diyeceğim,

bunun için de uyarı gelen kayıtları bulacağım sqli yazmam gerekiyor. sql basit ama zamandan dakika çıkaran firebird komutu yok.

onun için zaman-1/1440 denedim.

olayı biraz kurcalayınca sizlerin de soruna kafa yormanız neticesinde zaman-1.0/1440.00000 gibi ya da zaman-0.0006944444444 gibi çözüm olabiliyor. fakat buradaki küsürat beni kıllandırıyor.

eğer firebirdde bunu yapan time fonksiyonu yoksa sorun böyle çözülecek fakat küsüratı ne kadar uzun tutmak lazım, sorusu ortaya çıkyor bu sefer.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Zaman bilgisi içerisinden dakika değerini çekersen/EXTRACT edersen, yıl, ay, gün, saat bilgilerini de karşılaştırarak çözebilirsin belki :wink:

Kod: Tümünü seç

select extract(minute from current_timestamp) from rdb$database
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Kesin konuşmamın nedeni tarih aralığının zaten sınırlı olmasından.

Dereyi geçerken at değiştirmek konusuna gelince;
"Hiç düşünme, değiştir" derim. Ki bu konu bu sitede çok tartışıldı.
Genelde FireBird'ü tavsiye ediyorlar. Bilhassa MS-SQL'e karşı birçok kişinin antisempatisi var. Ama ben şahsen MS-SQL'in ORACLE'a rağmen önünün en açık veritabanı olduğunu düşünüyorum.
Ben keşke Paradox'tan InterBase yerine direk MS-SQL'e veya ORACLE'a geçseydim diye düşünüyorum.

Tabi, bunlar benim şahsi düşüncelerim.

İyi çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Unutulmamalıdır ki tecrübe hataların bileşkesidir :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
oquz

rsimsek ben dakika karşılaştırmayacağım

Mesaj gönderen oquz »

öncelikle teşekkürler;

bahadir ve rsimsek ben dakika karşılaştırmayacağım ben zaman karşılaştıracağım. ikisi arasında dağlar kadar fark var. bu iş encode ve decode ile olmaz, olsa bile bi dünya kod yazmak gerek.

örnek sql;

select * from tablename
where current_timestamp between (timestampfield-5dakika) and timestampfield
oquz

hakan can katılıyorum

Mesaj gönderen oquz »

hakan can sana katılıyorum.

ben paradoxtan mysql'e geçtim.
mysql ticari uygulamalarda ücretli olduğu için ve bu forumda firebird çok övüldüğü ve de ücretsiz olduğu için bir projede onu kullanmaya karar verdim.

ama işin içine girince gel görki firebird'ün mysql'ün yanına bile yaklaşamayacağını gördüm.

mssql ve oracle tecrübem olmadı, niyetim de yok çünkü pahalılar.

bu uğraştığım projenin veritabanı maliyetinin sıfır olması gerek. ben bunu yine en iyisi paradoxa çevireyim. diğer projelerimde de mysql'e devam.
Cevapla