bugün isimli field'i de program her çalıştığı zaman update etsem.
veritabanı ve program için ağır bir yük mü olur acaba ?
Kod: Tümünü seç
program her çalıştığı zaman git şu tablolardaki bugün isimli fieldlerin hepsine bugünün tarihini yaz.
Kod: Tümünü seç
program her çalıştığı zaman git şu tablolardaki bugün isimli fieldlerin hepsine bugünün tarihini yaz.
Kod: Tümünü seç
CREATE TABLE PERSONELIM2 (
KODU INTEGER NOT NULL,
ADI VARCHAR(20) NOT NULL,
SOYADI VARCHAR(20) NOT NULL,
DOGUM_TARIHI TIMESTAMP,
YASI INTEGER COMPUTED BY ((CURRENT_TIMESTAMP - DOGUM_TARIHI) / 365),
CONSTRAINT PK_PERSONELIM2 PRIMARY KEY (KODU));
Kod: Tümünü seç
YASI COMPUTED BY (YasBul(dogumt,current_date)),
Kod: Tümünü seç
YAS COMPUTED BY ((current_date-dogumtarihi) / 365)
Hakan Can yazdı:EXTRACT fonksiyonunu kullanarak isteğinizi direk yerine getirebilirsiniz:
İyi çalışmalar.Kod: Tümünü seç
CREATE TABLE PERSONEL ( ADI_SOYADI VARCHAR(50) NOT NULL, DOGUM_TARIHI TIMESTAMP, YASI COMPUTED BY (EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI)), PRIMARY KEY (ADI_SOYADI)); veya COMPUTED BY alanı olmadığını varsayalım: SELECT ADI_SOYADI, EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) AS YASI FROM PERSONEL
Kod: Tümünü seç
select DOGUM_TARIHI, UDF_YAS,
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) AS EXTRACT_YAS from TABLO
Kod: Tümünü seç
DOGUMT | UDF_YAS | EXTERACT_YAS
15.06.1949 57 58
07.07.1934 72 73
07.05.1944 62 63
03.01.1948 59 59
01.01.1950 57 57
06.02.1964 43 43
29.03.1964 42 43
31.05.1990 16 17
01.02.1995 12 12
06.07.1931 75 76
01.03.1942 65 65
07.03.1980 27 27
09.03.1986 20 21
06.07.1970 36 37
01.03.1966 41 41
17.08.2000 6 7
09.06.1930 76 77
01.10.1937 69 70
27.12.1963 43 44
20.01.1960 47 47
10.05.1958 48 49
01.01.1985 22 22
22.04.1989 17 18
09.01.1931 76 76
01.01.1961 46 46
01.01.1967 40 40
01.01.1988 19 19
01.01.1993 14 14
01.01.1994 13 13
29.04.1984 22 23
02.01.1982 25 25
06.06.1961 45 46
01.01.1960 47 47
04.09.1987 19 20
12.05.1990 16 17
28.01.1995 12 12
11.08.1996 10 11
18.07.1958 48 49
15.11.1980 26 27
04.01.1952 55 55
17.07.1957 49 50
01.02.1967 40 40
10.06.1991 15 16
04.03.1995 12 12
07.09.1998 8 9
07.03.1957 50 50
01.07.1961 45 46
03.01.1983 24 24
01.01.1937 70 70
09.12.1943 63 64
01.09.1944 62 63
01.07.1948 58 59
10.03.1948 58 59
03.09.1949 57 58
01.12.1965 41 42
13.05.1965 41 42
20.04.1991 15 16
01.05.1994 12 13
06.03.1998 9 9
21.07.1933 73 74
26.08.1933 73 74
27.02.1963 44 44
10.06.1952 54 55
04.06.1953 53 54
10.04.1980 26 27
10.04.1984 22 23
28.07.1986 20 21
05.09.1993 13 14
24.06.1964 42 43
05.01.1965 42 42
24.06.1990 16 17
25.07.1992 14 15
01.01.1975 32 32
01.01.1975 32 32
23.11.1999 7 8
19.02.2002 5 5
01.01.1974 33 33
01.01.1981 26 26
23.08.2000 6 7
20.06.2005 1 2
24.01.1956 51 51
20.10.1961 45 46
04.11.1985 21 22
28.11.1950 56 57
25.03.1955 51 52
29.01.1991 16 16
07.04.1981 25 26
11.08.1984 22 23
19.08.1949 57 58
01.01.1948 59 59
01.01.1987 20 20
05.06.1925 81 82
01.09.1954 52 53
29.12.1967 39 40
17.05.1963 43 44
16.08.1990 16 17
09.01.1991 16 16
03.07.1996 10 11
01.01.1926 81 81
27.12.2006 0 1
01.01.1978 29 29
02.10.1984 22 23
15.04.1949 57 58
10.01.1955 52 52
01.12.1979 27 28
03.09.1980 26 27
01.01.1920 87 87
12.03.1949 57 58
01.11.1951 55 56
10.12.1973 33 34
15.08.1980 26 27
07.05.1991 15 16
20.02.1939 68 68
21.03.1943 63 64
12.11.1986 20 21
13.06.1946 60 61
28.12.1983 23 24
01.01.1987 20 20
01.01.1979 28 28
01.01.1983 24 24
19.01.2004 3 3
20.03.1954 52 53
01.10.1955 51 52
26.11.1979 27 28
03.06.1983 23 24
03.01.1933 74 74
03.07.1935 71 72
10.01.1981 26 26
21.07.1982 24 25
01.09.2000 6 7
06.04.2006 0 1
09.11.1948 58 59
15.08.1950 56 57
03.06.1983 23 24
04.09.1939 67 68
01.07.1977 29 30
20.03.1978 28 29
04.12.2001 5 6
04.09.2003 3 4
20.04.1945 61 62
03.06.1980 26 27
01.01.1964 43 43
05.01.1964 43 43
13.09.1989 17 18
13.09.1989 17 18
05.06.1998 8 9
27.08.2001 5 6
08.06.1960 46 47
13.08.1962 44 45
15.09.1986 20 21
09.10.1992 14 15
20.05.2005 1 2
02.03.1955 52 52
01.01.1988 19 19
01.01.1982 25 25
01.01.1920 87 87
01.01.1967 40 40
15.11.1988 18 19
02.06.1990 16 17
01.01.1990 17 17
Kod: Tümünü seç
SELECT
DOGUM_TARIHI,
UDF_YAS,
CASE WHEN EXTRACT(MONTH FROM CURRENT_TIMESTAMP) * 12 + EXTRACT(DAY FROM CURRENT_TIMESTAMP) < EXTRACT(MONTH FROM DOGUM_TARIHI) * 12 + EXTRACT(DAY FROM DOGUM_TARIHI) THEN
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) - 1
ELSE
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) END AS EXTRACT_YAS
FROM TABLO
bir yerde ufak bir hata daha varHakan Can yazdı: Aynı sonucu verecektir.
Kod: Tümünü seç
DOGUMT | UDF_YAS | EXTERACT_YAS
26.02.2005 2 1
23.02.2005 2 1
28.02.2002 5 4
22.02.2002 5 4
25.02.1984 23 22
27.02.1938 69 68
Kod: Tümünü seç
SELECT
DOGUM_TARIHI,
UDF_YAS,
CASE WHEN EXTRACT(MONTH FROM CURRENT_TIMESTAMP) * 120 + EXTRACT(DAY FROM CURRENT_TIMESTAMP) < EXTRACT(MONTH FROM DOGUM_TARIHI) * 120 + EXTRACT(DAY FROM DOGUM_TARIHI) THEN
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) - 1
ELSE
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - EXTRACT(YEAR FROM DOGUM_TARIHI) END AS EXTRACT_YAS
FROM TABLO