[Opgelost] format datums uit mysql

Bespreek het databaseprogramma
bvdperk
Berichten: 5
Lid geworden op: di apr 27, 2010 1:41 pm

[Opgelost] format datums uit mysql

Bericht door bvdperk »

Hallo,
Ik heb een mysql database (eGroupware) met daarin enkele Unix-timestamp velden. Die zet ik in een query om naar datums met behulp van de functie from_unixtime, maar als ik deze gegevens binnenhaal in Calc worden ze omgezet naar tekst (voor elke waarde komt een enkele quote ' te staan, waardoor opmaken als datum ook niet meer helpt). Ik wil ze graag als echte datums in mijn spreadsheet hebben. Nu kan ik natuurlijk elke keer met een regexp gaan zoeken en vervangen, maar is er misschien een elegantere en minder arbeidsintensieve methode om dit voor elkaar te krijgen?

Groet,
Bert.
Laatst gewijzigd door bvdperk op wo apr 28, 2010 8:21 am, 4 keer totaal gewijzigd.
OpenOffice 2.4.1 op Ubuntu Hardy / 3.2 op Ubuntu Lucid en Windows XP
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: format datums uit mysql

Bericht door RPG »

Hallo

Ik heb het geprobeer om een timestamp vanuit een database naar een spreadsheet te slepen en dat werkt goed.
Ik weet dat het in de versie OOo2.40 and OOo2.41 niet goed werkt. Ik denk dan het in versie OOo2.43 wel goed werkt.
Ik werk niet met MySQL ik weet niet of dat een verschil kan maken alleen met de standard HSQLDB

Met welke versie van OOo heb je problemen?

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
bvdperk
Berichten: 5
Lid geworden op: di apr 27, 2010 1:41 pm

Re: format datums uit mysql

Bericht door bvdperk »

Ik kwam het probleem tegen in zowel 2.4.1 als 3.2. Het ligt aan de from_unixtime mysql functie, die maakt er tekst van. Heb zojuist een betere manier gevonden (http://user.services.openoffice.org/en/ ... f=13&t=606), die een in OOo bruikbaar getal geeft dat ik als datum kan opmaken.
OpenOffice 2.4.1 op Ubuntu Hardy / 3.2 op Ubuntu Lucid en Windows XP
bvdperk
Berichten: 5
Lid geworden op: di apr 27, 2010 1:41 pm

Re: [Opgelost] format datums uit mysql

Bericht door bvdperk »

Correctie: bovenstaande geeft niet de datum die oorspronkelijk in de database stond, maar (voorzover ik kan zien) consequent 1 dag eerder. Ook de methode TO_DAYS(FROM_UNIXTIME()) geeft dit onjuiste resultaat.. Wie heeft een beter idee? Dit is zo onderhand geen OpenOffice kwestie meer, maar eerder Mysql.
OpenOffice 2.4.1 op Ubuntu Hardy / 3.2 op Ubuntu Lucid en Windows XP
bvdperk
Berichten: 5
Lid geworden op: di apr 27, 2010 1:41 pm

Re: format datums uit mysql

Bericht door bvdperk »

OK, ik denk dat ik 'm nu correct heb. De (My)SQL die een Unix timestamp (seconden sinds 1970-01-01) vertaalt in een Calc datumwaarde (dagen sinds 1899-12-30) is:

Code: Selecteer alles

DATEDIFF( FROM_UNIXTIME( `tabel`.`datumveld`), '1899-12-30' )
Pff. Was alles maar zo eenvoudig.
OpenOffice 2.4.1 op Ubuntu Hardy / 3.2 op Ubuntu Lucid en Windows XP
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: format datums uit mysql

Bericht door RPG »

Hallo

Ik zie dat je ook op het engelse forum actief bent. Ga daar zoeken op de auteurs Sliderule of Villeroy.
Misschien kun je ook wachten tot eremmel mogelijk een reactie plaatst die weet dacht ik wat van MySQL.

Sliderule is erg gericht op SQL
Villeroy is erg gericht op de combinatie die er te maken zijn van een database naar calc. Hij maak daar veel gebruik van.

Dat gezegd hebbende heb ik het idee dat je het anders moet doen. Ik krijg het idee dat je het probleem steeds slechter definieert. Welke waarde krijg je als je enkel het veld opvraag zonder enkele opmaak. Dat lijkt mij waar je van uit moet gaan.

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
bvdperk
Berichten: 5
Lid geworden op: di apr 27, 2010 1:41 pm

Re: format datums uit mysql

Bericht door bvdperk »

Hallo Romke,
Als ik het het veld zonder enige bewerking opvraag, krijg ik een Unix timestamp, dus seconden sinds 1970-01-01 00:00:00, als getal in Calc. Dat is misschien niet de meest standaard manier om een datum in MySQL op te slaan, maar zo doet eGroupware, de webapplicatie waar de gegevens uit komen, dat nu eenmaal. Niets mis mee verder, want MySQL heeft daar een keurige functie FROM_UNIXTIME() voor om er een datum van te maken. Alleen de output daarvan gaf in Calc een afgedwongen tekstopmaak, en dat wilde ik niet.
Het duurde even voordat ik door had dat een datum in Calc is gedefinieerd als dagen sinds 1899-12-30 (is te vinden in Extra -> Opties -> Calc -> Berekenen -> Datum), en toen was het eenvoudig op te lossen met DATEDIFF(), die het verschil in dagen tussen twee datums berekent.

Bedankt voor het meedenken!
OpenOffice 2.4.1 op Ubuntu Hardy / 3.2 op Ubuntu Lucid en Windows XP
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: format datums uit mysql

Bericht door RPG »

Hallo

Als ik het goed begrijp is het probleem nu op gelost.

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Plaats reactie