Pagina 1 van 1

[Opgelost] format datums uit mysql

Geplaatst: di apr 27, 2010 1:56 pm
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.

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 2:25 pm
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

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 2:41 pm
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.

Re: [Opgelost] format datums uit mysql

Geplaatst: di apr 27, 2010 3:16 pm
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.

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 4:36 pm
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.

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 4:59 pm
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

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 6:38 pm
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!

Re: format datums uit mysql

Geplaatst: di apr 27, 2010 6:50 pm
door RPG
Hallo

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

Romke