Champ PHP/MSSQL DateTime pas tirer correctement

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Juin 30th, 2011, 12:36 pm

Im à l'aide d'un script PHP sur un serveur MSSQL. Simplement, j'ai une table qui a un champ datetime qui ressemble obtient stockées pour exemple 2011-06-30 12:20:58.360, mais quand j'extraire cette colonne et essayez de le lancer dans une autre requête, j'obtiens le 30 juin 2011 12 H 20 automatiquement. Je le fais aucune mise en forme.

Code: [ Select ]
//.. select and loop with mssql_fetch_array()

$discardeddate = $row['DiscardedDate'];
$discardeddate_ts = strtotime($discardeddate);

$dh = date('Y-m-d H:i:u', $discardeddate_ts);

$table2 = "SELECT * FROM table2 WHERE discardeddate = '$discardeddate'";
// this doesn't work because my query has discardeddate = 'Jun 30 2011 12:20PM' instead of it needs to match '2011-06-30 12:20:58.360'                
  1. //.. select and loop with mssql_fetch_array()
  2. $discardeddate = $row['DiscardedDate'];
  3. $discardeddate_ts = strtotime($discardeddate);
  4. $dh = date('Y-m-d H:i:u', $discardeddate_ts);
  5. $table2 = "SELECT * FROM table2 WHERE discardeddate = '$discardeddate'";
  6. // this doesn't work because my query has discardeddate = 'Jun 30 2011 12:20PM' instead of it needs to match '2011-06-30 12:20:58.360'                


Il semble quand je strtotime je perds les 58 secondes cause obtenir 2011-06-30 12 : 20 : 000000. Donc, je pense que le 2011 30 Jun 12 H 20 se strtotime. Im espérant que quelqu'un peut restreindre la cause de la solution, je pense que sa va être un serveur/os/ou paramètre de php.ini. Mais il sera peut-être quelque chose de simple avec le code ou la requête. Merci.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juin 30th, 2011, 12:36 pm

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Juin 30th, 2011, 12:58 pm

IVe ajouté mssql.datetimeconvert = Off à mon php.ini.

J'ai maintenant au moins obtenir les secondes. Ainsi, obtenir 2011-06-30 12 : 20 : 58 mais ce encore va ne correspondent ne pas aux table2 2011-06-30 12:20:58.360. Y a-t-il une manière de changer le format PHP par défaut lors de la désactivation de datetimeconvert ?
  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Nov 18, 2007
  • Messages: 429
  • Status: Offline

Message Juin 30th, 2011, 2:05 pm

Grattez qui. J'ai enlevé le mssql.datetimeconver = Off et juste left it back par défaut. Mine n'était pas activé ou désactivé.

Ensuite, j'ai pu résoudre ce problème en utilisant la commande convertir à l'intérieur de la requête. Les 121 est le code du style. Recherche CAST et CONVERT pour MS SQL.

Code: [ Select ]

$getright_date = "SELECT CONVERT(varchar(23),DiscardedDate,121) as ritedate FROM table1 WHERE id = '1'";
$rungetright_date = mssql_query($getright_date);
while ($row = mssql_fetch_array($rungetright_date)) {
    $actualstored_date = $row['ritedate'];
}

// now I can use $actualstored_date to make comparisons in other MSSQL tables

$table2 = "SELECT * FROM table2 WHERE discardeddate = '$actualstored_date'";
  1. $getright_date = "SELECT CONVERT(varchar(23),DiscardedDate,121) as ritedate FROM table1 WHERE id = '1'";
  2. $rungetright_date = mssql_query($getright_date);
  3. while ($row = mssql_fetch_array($rungetright_date)) {
  4.     $actualstored_date = $row['ritedate'];
  5. }
  6. // now I can use $actualstored_date to make comparisons in other MSSQL tables
  7. $table2 = "SELECT * FROM table2 WHERE discardeddate = '$actualstored_date'";


Ainsi, Ive a obtenu effectuer un appel supplémentaire et de laisser la poignée SQL retourner le format de date nécessaires en php. En outre, je ne pourrais pas obtenir CONVERT(datetime,DiscardedDate,121) à travailler comme je suppose que parce que le champ est déjà un datetime.

Espérons que cela aide à quelqu'un. Je ne peux pas croire qu'une base de données souhaite stocker une valeur, mais renvoie à une autre. Je pense que les conversions devraient être laissées au script et pas le sql. Principalement parce qu'avec un script, je peux afficher la date aucunement qu'il faut que je peux besoin affiche plusieurs manières différentes. Dans l'ensemble, je suppose que c'est un programme d'installation de la vue dans la MSSQL serveur qui peut être configuré le même pour les autres DBs et pas nécessairement MSs faute, mais Id ont à dire de ce problème avec le fait que theres aucune limite SQL n'est vraiment peeving me off au serveur MSSQL.

Afficher de l'information

  • Total des messages de ce sujet: 3 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 184 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC