praegune kellaaeg 05.08.2025 14:41:31
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
multizync
HV kasutaja

liitunud: 23.05.2005
|
16.04.2012 01:05:32
JAVA abi hetke kuupäeva kohta |
|
|
http://www.upload.ee/download/2264428/07a4fb1f49d1811dd9f/TypeDate.d
REL'i andmebaasisüsteemi kataloogis oli JAVA keeles kirjutaud valmis selline skript, nagu ülaltoodud aadressil on. TypeDate.d , mis defineerib kuupäeva tüüpi, suhteliselt algeliselt vms.
Siin on üks näide, kuidas Date tüüpi veergu sisestatakse ( Now() ) funktsiooni abil millisekundid.
Tulemus on järgmine.
Var Date_table
BASE RELATION {code_col INTEGER, date_col Date}
KEY {code_col};
INSERT Date_table RELATION
{TUPLE {code_col GET_UNIQUE_NUMBER(), date_col Date(Now())}
};
Aga, mul oleks vaja nii, et Date tüüpi veergu tuleks hetke kuupäev (või ka timestamp, tunnid, minutid). Ma küll googeldasin, aga googeldades annab igasuguseid erinevaid lahendusi, ning, ma ei oska neid seal tööle panna..
Et mis tuleks muuta antud skriptis vms, et seda teostada..
Tänud ette..
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
18 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
multizync
HV kasutaja

liitunud: 23.05.2005
|
16.04.2012 14:15:11
|
|
|
Nii, aga kuhu ma peaksin need read panema, seal TypeDate.d failis..
tsitaat: |
long now = System.currentTimeMillis();
java.util.Date date = new java.util.Date(now); |
Sellega tuleb kuupäevaks selline: Mon Apr 16 14:02:39 EEST 2012
Ma ei tea kas see töötab niimoodi, proovisin küll Rel's, seda skripti käivitada, koos üleval oleva 2 reaga, aga ma ei tea täpselt kuhu need täpselt panna tuleb. Käima ta läks niimoodi.
tsitaat: |
.......
/** Value constructor. Construct date given a number of milliseconds
* since January 1, 1970, 00:00:00 GMT. */
public Date(Generator generator, ValueInteger milliseconds) {
super(generator);
long now = System.currentTimeMillis();
java.util.Date d = new java.util.Date(now);
}
........ |
Aga väärtused on tabelis, Date tüüpi veerus ikka millisekundid..
Seal .d skripti failis tulenevalt peaks Date hoidma Integere, (millisekundid).
Seda peaks siis muutma, et ta hoiaks väärtuseid järgmise kujul "yyyy/MM/dd hh:mm"
Üritasin teha, aga tulutult..
Tänud ette..
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
18 |
|
tagasi üles |
|
 |
Vermon
Kreisi kasutaja

liitunud: 04.12.2003
|
16.04.2012 14:22:52
|
|
|
public String toString() {
DateFormat df = new SimpleDateFormat("yyyy/MM/dd hh:mm");
return df.format(d);
}
Ma vist ei saanud ikka päris õigesti aru mis teema on aga jätan igaksjuhuks ikkagi oma postituse
|
|
Kommentaarid: 14 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
12 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
16.04.2012 14:36:37
|
|
|
No aga miks baas ei või hoida millisekundeid? Need on ju üheselt teisendatavad pärast inimloetavaks timestampiks .. ja kindlasti on andmebaasil kergem ja efektiivsem sellisel kujul andmeid hoida.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
multizync
HV kasutaja

liitunud: 23.05.2005
|
16.04.2012 14:52:24
|
|
|
Fukiku kirjutas: |
No aga miks baas ei või hoida millisekundeid? Need on ju üheselt teisendatavad pärast inimloetavaks timestampiks .. ja kindlasti on andmebaasil kergem ja efektiivsem sellisel kujul andmeid hoida. |
Okei, vist tõesti on nii efektiivsem.
Aga, kui näiteks tahetakse andmeid näha sealt tabelist, siis visuaalselt millisekundid ei anna loetavat infot. Näiteks kui andmeid tahetakse näha tabelist, siis võiks need tõesti teisendada inimloetavaks..
Aga kuidas seda teha?
Selleks peaks REL'is tegema arvatavasti operaatori, mis tagastab CHAR'i , et väärtused oleksid sellised (yyyy/MM/dd hh:mm).
OPERATOR MILLSEC_TO_DATE(i INTEGER) RETURNS CHAR Java FOREIGN
Väike näide, kuidas REL'is operaatoreid luuakse..
Spoiler 
OPERATOR SUBSTRING(s CHAR, index INTEGER) RETURNS CHAR Java FOREIGN
// Substring, 0 based
return ValueCharacter.select(context.getGenerator(), s.stringValue().substring((int)index.longValue()));
END OPERATOR;
OPERATOR IS_DIGITS(s CHARACTER) RETURNS BOOLEAN Java FOREIGN
String sbuf = s.stringValue();
for (int i=0; i<sbuf.length(); i++)
if (!Character.isDigit(sbuf.charAt(i)))
return ValueBoolean.select(context.getGenerator(), false);
return ValueBoolean.select(context.getGenerator(), true);
END OPERATOR;
Kuna, endal JAVA'ga lood väga kiita pole, äkki, oskab äkki keegi selle põhjal valmis teha sellise operaatori, mis tagastaks kuupäeva..
Oleksin vääga tänulik igasuguse abi eest..
viimati muutis multizync 16.04.2012 15:50:50, muudetud 1 kord |
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
18 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
16.04.2012 14:54:17
|
|
|
Kas sellist operaatorit juba olemas ei ole? Tundub suhteliselt mõistlik funktsionaalsus, mida üks andmebaasimootor võiks omada.. Teisalt nii palju, kui ma uurinud olen, on see REL muidugi mingi naljakas eksperimentaalne asi - võib-olla seal tõesti pole.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
multizync
HV kasutaja

liitunud: 23.05.2005
|
16.04.2012 16:26:34
|
|
|
Siin on OperatorsChar skirpti fail, kus on olemas sellised operaatorid. Ise küll ei leidnud sellist...
Samas, kui mul on see kuupäeva atribuut INTEGER (mis hoiab millisekundeid), siis kui ma teeksin päringu tabelis, sellele reale, siis operaator võtab sisse INTEGERI, aga väljastama peaks CHAR'i (yyyy/MM/dd hh:mm), aga siis tekib küsimus, et kus seda CHAR väärtust hoidma hakatakse, kuna kuupäeva atribuut on INTEGER.
Või olen ma valesti aru saanud, et seda väärtust ei hoitagi kusagil, et ainult kuvatakse, et siis see ei loe..?
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
18 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
16.04.2012 18:49:22
|
|
|
multizync kirjutas: |
Nii, aga kuhu ma peaksin need read panema, seal TypeDate.d failis..
tsitaat: |
long now = System.currentTimeMillis();
java.util.Date date = new java.util.Date(now); |
Sellega tuleb kuupäevaks selline: Mon Apr 16 14:02:39 EEST 2012
|
Aga kas siis selline ei kõlba, ma pole eriti küll JAVAS kodus ja otsisin sulle näite internetist, kuid see peaks olema ju täpselt see millest sa kogu aeg räägid
long now = // siia võtad väärtuse oma andmebaasist millisekundites
java.util.Date date = new java.util.Date(now); |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|