Format datetime non respecté

Format datetime non respecté - Perl - Programmation

Marsh Posté le 02-07-2008 à 09:55:07    

Bonjour à tous,
 
J'ai fait un petit script CGI qui me remonte les données d'une BD SQL SERVER.
Le problème est que le champ date dans la BD est au format datetime donc 2008-07-01 09:36:01.000
mais lors de l'affichage, il me sort la date au format Jul 1 2008 09:36AM
 
Avez-vous une idée.
 
Voici le script tout bête :

Code :
  1. #!/usr/bin/perl -w
  2. print "Content-type: text/html\n\n";
  3. use strict;
  4. use CGI::Carp qw(fatalsToBrowser);
  5. use DBI;
  6. my $data_source = q/dbi:Sybase:MSSQL-TEST/;
  7. my $user = q/sa/;
  8. my $password = q/admin/;
  9. # Connect to the data source and get a handle for that connection.
  10. my $dbh = DBI->connect($data_source, $user, $password)
  11.      or die "Can't connect to $data_source: $DBI::errstr";
  12. #
  13. #
  14.      # Connexion à la base TEST
  15.      my $use = "use TEST";
  16.      my $sth = $dbh->prepare($use) or die "Can't connect to database: $DBI::errstr";
  17.      $sth->execute();
  18.      my $sql_inconnu = "SELECT [Date_Heure], [Compteur], [Type_Evenement], [Numero], [Valeur], [Numero_Site], [Description] FROM [TEST].[test].[MS_RETRO] WHERE [Type_Evenement] = 101 and [Description] like '\%inconnu\%' order by [Date_Heure]";
  19. #
  20.      # Prepare the statement.
  21.      $sth = $dbh->prepare($sql_inconnu) or die "Can't prepare statement: $DBI::errstr";
  22.      # Execute the statement.
  23.      if($sth->execute())#Execution de la commande
  24.      {
  25.         my $names = $sth->{'NAME'};#Nom de la colonne
  26.         my $numFields = $sth->{'NUM_OF_FIELDS'};#Nombre de champs
  27.         print "<table border='1'>\n<tr>\n";
  28.         print "<tr><th colspan='7'style='background-color:red'>Etat des Inconnus</th></tr>";
  29.         for (my $i = 0;  $i < $numFields;  $i++)
  30.         {
  31.                 print("<td>$$names[$i]</td>" );#Affichage du nom de chaque champs
  32.         }
  33.         print "</tr>\n<tr>\n";
  34.         while (my $ref = $sth->fetchrow_arrayref)#Récupère la ligne comme une référence de tableau de champs.
  35.         {
  36.                 for (my $j = 0;  $j < $numFields;  $j++)
  37.                 {
  38.                         print("<td>$$ref[$j]</td>" );#Affiche les données de chaque champs
  39.                 }
  40.         print "</tr>";
  41.         }
  42. print "</table>";
  43. }


Reply

Marsh Posté le 02-07-2008 à 09:55:07   

Reply

Marsh Posté le 02-07-2008 à 12:01:22    

ca m'a plus l'air d'un problème de formattage de date côté SQL Server

Reply

Marsh Posté le 02-07-2008 à 12:16:02    

Peut être mais je n'en suis pas sure.
 
J'ai un script en php faisant également une requête sur cette base, et la remontée de date se fait sans modif.
 
 

Reply

Marsh Posté le 02-07-2008 à 12:52:24    

Citation :

Le problème est que le champ date dans la BD est au format datetime donc 2008-07-01 09:36:01.000

datetime, c'est stoqué en interne sur 4 octets par SQL Server
C'est SQL Server qui fait par défaut le format de sortie que tu as: http://msdn.microsoft.com/en-us/li [...] L.80).aspx
0 (default) mon dd yyyy hh:miAM (or PM)
Il doit y avoir moyen de modifier ça, mais je ne suis pas spécialiste.
A+,


Message édité par gilou le 02-07-2008 à 13:09:36

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-07-2008 à 13:43:56    

CONVERT(DATETIME,date_heure,format) et voir le lien de gilou pour la liste des formats possibles.

 

Sinon voir les variables d'environnements de DBD, je crois  que tu en as une sur le format de sortie des dates.


Message édité par anapajari le 02-07-2008 à 13:44:55

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed