[PHP/MS-SQL] Datetime conversie

Pagina: 1
Acties:
  • 1.103 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 10-05 21:54
Ik heb een database met een tabel waarin oa een datetime column zit.
Data wordt als volgt opgeslapen: 7-11-2006 12:21:35
Dit echo ik met PHP en wat krijg ik: Nov 7 2006 12:21 PM
ik heb de php.ini setting mssql.datetimeconvert op On en Off gehad maar dit doet niks.
Als ik er een timestamp van genereer met strtotime geeft hij een unexpected T_STRING.

Waarom? En hoe kan ik dit repareren?

[ Voor 13% gewijzigd door Bbfreak op 11-07-2006 13:53 ]

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Unexpected T_STRING wijst op een tikfout; een komma/punt of puntkomma te weinig, zoiets. Kijk daar maar eens naar.

Wat had je zelf al geprobeerd en wat lukt daar niet aan? Waarom kom je er met de date & time functies van SQL Server en PHP niet uit? Lees Programming Beleid - De "quickstart" even door en geef wat meer info, want hier kunnen we niks mee.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 11:29
Waarom ligt voor de hand: Je gebruikt een functie van PHP die verwacht dat de maand na de dag staat terwijl je een string hebt waar de maand ervoor staat. De oplossing is dus zorgen dat je een string uit je database krijgt waar je wel mee kunt werken. Bijvoorbeeld hier staat hoe je dat in MS SQL kunt doen :)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 10-05 21:54
Wat ik al geprobeerd heb:

1. In php.ini de variabel mssql.datetimeconvert op On en Off gezet.
2. De waarde uit de query om te zetten naar een timestamp zodat ik er via de date functie er een eigen format overheen kan gooien.

Dit helpt allemaal niks. Ik weet geen andere manier om de PHP functies te gebruiken.
Als ik helemaal geen PHP functies gebruik en rechtstreeks echo vanuit de resultset geeft hij de waarde in de TS.

[ Voor 19% gewijzigd door Bbfreak op 11-07-2006 14:03 ]

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 11:29
Overigens is het zelfs met de uitvoer die je nu uit je database krijgt geen rocket science om er de verschillende elementen uit te halen. Een quick 'n dirty oplossing:
PHP:
1
2
3
4
$datetime = '7-11-2006 12:21:35';
list ($date, $time) = explode (' ', $datetime);
list ($hour, $minute, $second) = explode(':', $time);
list ($day, $month, $year) = explode('-', $date);

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Zoals T-MOB aangeeft, gewoon zorgen dat je gegevens terug krijgt in een format waar de PHP functie wat mee kan. Gebruik CONVERT() in je query om dat voor elkaar te krijgen.

edit:
Natuurlijk als reactie op eerste bericht van T-MOB; niet het 2e. Meneertje moet er weer even tussendoor piepen. Streber ;)

[ Voor 21% gewijzigd door Annie op 11-07-2006 14:14 ]

Today's subliminal thought is:


Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 10-05 21:54
Bedankt voor alle replies. Er is wat raars aan de hand en heeft niet met PHP te maken.
We hebben 2 SQL Server 2000 installaties. Ontwikkel en productie.
In ontwikkeling krijg ik het probleem van de TS maar in productie niet.
In ontwikkeling wordt de data ook in het formaat 11-07-2006 opgeslagen ipv 07-11-2006 :?
Zowel in productie als ontwikkeling wordt dezelfde PHP code gebruikt om de data op te slaan.
Het schijnt dus een SQL Server setting te zijn.

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Data worden niet in dat formaat opgeslagen, ze worden er alleen automatisch in dat formaat uit gehaald. Je denkt toch niet dat SQL Server met een string als 11-07-2006 kan rekenen en kijken of 12-03-2006 eerder of later komt? ;) Verder kun je nog steeds met CONVERT() (wat ook niets met PHP te maken heeft) je datumformaat instellen... Lees je de pagina's die hier gelinkt worden überhaupt wel?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 30225

-NMe- schreef op dinsdag 11 juli 2006 @ 14:33:
Data worden niet in dat formaat opgeslagen, ze worden er alleen automatisch in dat formaat uit gehaald.
Idd, datetime formaat wordt als double ofzo opgeslagen. En hoezo worden ze automatisch in dat formaat uitgehaald? Dat klopt niet, dat is alleen de weergave.

En volgens mij is dit geen PHP-probleem, maar sla je de gegevens gewoon verkeerd op in de database.
Als je parameterized queries zou gebruiken dan had je dit probleem niet gehad. En anders moet je even kijken naar Internationale datum notatie

--
Met date moet je toch gewoon de datum kunnen formatteren? Wat voor type variabele heb je?

[ Voor 10% gewijzigd door Anoniem: 30225 op 15-07-2006 14:31 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Anoniem: 30225 schreef op zaterdag 15 juli 2006 @ 14:26:
Idd, datetime formaat wordt als double ofzo opgeslagen. En hoezo worden ze automatisch in dat formaat uitgehaald? Dat klopt niet, dat is alleen de weergave.
Die weergave is wel de standaardweergave als je een datum selecteert, toch? :) Dat is waar ik op doelde. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-06 21:17
Zo te horen draait je ontwikkel SQL server met Nederlandse taalinstellingen, je productie MSSQL server op Engels, en ook je PHP installatie op Engels.

Datums in Nederlands formaat in de engelse PHP functies gooien werkt niet nee.
Pagina: 1