[PHP - SQL Server 2000] Datumformaat

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In een PHP 4.4 / SQL server 2000 omgeving krijg ik bij het opvragen van een datumveld op een test-pc met WinXp NL het formaat ‘1 sep 2006 0:00’ terug.
Met hetzelfde script verschijnt in de productieomgeving (Windows Server 2003-R2 Eng.) een datum in het formaat ‘Sep 1 2006 12:00AM’.
De datum/tijd-instellingen in beide configuratieschermen zijn (lijken) gelijk. Ook de PHP-versies en -instellingen komen overeen.
Hoe krijg ik op beide systemen een identiek resultaat?

Vr. groet
Paul

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:39

Janoz

Moderator Devschuur®

!litemod

Het makkelijkste is om bij het opvragen een specifiek datum formaat op te geven. In dat geval ben je neit meer afhankelijk van wat voor regio instelling op de server dan ook.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedoel je een PHP-functie of iets anders?

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 10-09 15:33
Ik denk dat Janoz doelt op een MS-SQL functie. Je moet dan met DATEPART of CONVERT aan de slag. Voor een voorbeeld zie onderstaand artikel.
http://www.databasejourna...mssql/article.php/2197931
Het probleem in PHP is dat het loosed typed is en dus geen date data type kent.

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Even de landinstellingen van ofwel MSSQL ofwel Windows gelijk trekken?

Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 19:24

Reinier

\o/

Het makkelijks is om met day( datumveld ) , month( datumveld ) en year( datumveld ) te werken. En anders met convert. Dan gaat het altijd goed en dat kan dus direct in je SQL query.

[ Voor 8% gewijzigd door Reinier op 05-10-2006 21:21 ]


Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 10-09 15:33
@frickY:
Het lijkt mij niet wenselijk om van server instellingen afhankelijk te zijn. In dit geval is het expliciet opgeven van date formatting een veel veiligere oplossing. Zie ook de reply van Janoz.

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor alle in principe bruikbare oplossingen!

Het nadeel is dat ik nogal wat queries moet gaan herschrijven. Als dat oververmijdelijk is, zal ik dat zeker doen, maar voor mijn gevoel moeten beide systemen toch dezelfde taal kunnen praten.
Zijn er misschien Apache-instellingen die de oorzaak van de verschillen kunnen zijn?

Groet,

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 10-09 15:33
Verwijderd schreef op vrijdag 06 oktober 2006 @ 17:37:
Het nadeel is dat ik nogal wat queries moet gaan herschrijven. Als dat oververmijdelijk is, zal ik dat zeker doen, maar voor mijn gevoel moeten beide systemen toch dezelfde taal kunnen praten.
Zijn er misschien Apache-instellingen die de oorzaak van de verschillen kunnen zijn?
Nee Apache heeft hier niets mee van doen en PHP ook niet. In SQL Server zal je het default date format moeten kunnen configureren. Een beetje zoeken in Google groups doet wonderen, bijv. naar "sql server 2000 date format locale settings". Hieronder een bruikbare link:
http://groups.google.nl/g...=2&hl=nl#6ad4c8050afed85d
The presentation of datetime data is set at the connection level, where you
can set it with SET DATEFORMAT explicitly. It you don't set anything at
connection level is will default to the language (yes language) for the
login.
Nog een andere: gebruik de Enterprise Manager eens om je query in te testen. Zo nu genoeg voorgekauwd. :P

It’s nice to be important but it’s more important to be nice

Pagina: 1