2010-11-15 5 views
3

Je sais qu'il y a beaucoup d'informations sur les dates sur Internet mais j'ai du mal à utiliser ce que j'ai vu.PHP: DATETIME help

J'ai un contrôle de calage relié à une zone de texte. Il le prend sous la forme 15/11/2010 (britannique). Je l'utilise pour interroger les champs datetime dans un serveur SQL db au format 15/11/2010 00:00:00. Après la capture les dates de publication, je passe les valeurs sur ma méthode qui tente de convertir le texte en format d'heure. Lorsque je demande quelque chose entre 01/01/2010 et 01/07/2010, j'obtiens un certain nombre de résultats. Quand je change cela entre 01/01/2010 et 30/10/2010, je reçois une erreur. L'erreur n'est pas valide pour foreach (n'a pas encore détecté l'erreur). Je suppose que c'est quelque chose à voir avec mes formats?

function getSupportTicketsbySubIssueAndDate($subissueid, $from, $to){ 

    $subissueid = $this->ms_escape_string($subissueid); 

    $from = date("DD/MM/YY", strtotime($from)); 
    $to = date("DD/MM/YY", strtotime($to)); 

    $connection = new Connections(); 
    $conn = $connection->connectToWarehouse(); 
    $atid = $_SESSION['saveddata']['autotaskid']; 


    $tsql = "SELECT wh_task.task_id, wh_task.task_name, wh_task.task_description, wh_task.task_number, wh_task.reported_by_name, wh_task.create_time, wh_resource.first_name, wh_resource.last_name, wh_task_status.task_status_name ". 
      "FROM wh_task_status INNER JOIN (wh_task INNER JOIN wh_resource ON wh_task.assigned_resource_id = wh_resource.resource_id) ON wh_task_status.task_status_id = wh_task.task_status_id ". 
      "WHERE (account_id = $atid) AND (subissue_type_id = $subissueid) AND (((wh_task.create_time) Between '$from' And '$to'))". 
      "ORDER BY create_time DESC"; 


    // set up array to hold each of the issue types and the number of tickets in each 
    $ticket; 

    $stmt = sqlsrv_query($conn, $tsql); 
    if($stmt === false) 
    { 
      echo "Error in query preparation/execution.\n"; 
      die(print_r(sqlsrv_errors(), true)); 
    } 

    $x = 0; 
    /* Retrieve each row as an associative array and display the results.*/ 
    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) 
    { 
      $ticket[$x][0] = $row['task_name']; 
      $ticket[$x][1] = $row['task_description']; 
      $ticket[$x][2] = $row['task_number']; 
      $ticket[$x][3] = $row['reported_by_name']; 
      $ticket[$x][4] = $row['first_name']; 
      $ticket[$x][5] = $row['last_name']; 
      $ticket[$x][6] = $row['task_status_name']; 
      $ticket[$x][7] = $row['create_time']; 
      $ticket[$x][8] = $row['task_id']; 

      $x++; 
    } 

    return $ticket; 
} 

Toute aide plus appréciée!

Jonesy

+0

Je pense que vous voulez également convertir votre datetime pour MySQL. http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html et http://dev.mysql.com/doc/refman/5.1/en/date-and- time-types.html –

Répondre

4

Je ne suis pas sûr si vous formatez les dates correctement. Vous pouvez trouver toutes les règles de formatage en bas via l'URL affichée

date("DD/MM/YY ... 

Ce n'est pas la cause va de travail qui n'est pas la façon dont ils sont formatés en PHP. Ceci:

date("d/m/y ... 

changera le format en JJ/MM/AA. :)

http://php.net/manual/en/function.date.php

+0

D/m/y va imprimer le jour en tant que texte si? – iamjonesy

+0

Si vous avez besoin de l'horodatage unix d'une chaîne de date, la fonction strtotime ($ str) est excellente. http://php.net/manual/fr/function.strtotime.php – jocull

+0

@jocull déjà utilisé – iamjonesy

1
Date

("JJ/MM/AA"); produirait SATSAT/DECDEC/2010201020102010 ..
assez sûr que vous voulez date("d/m/Y",...

+0

Si je le mets dans ce format et choisissez le 13/01/2010 et 13/11/2010 quand je fais écho aux dates après la conversion qu'ils montrent comme 01/01/1970 et 01/01/1970 – iamjonesy

+0

Ensuite, votre horodatage est faux - à savoir, $ form et $ à ne sont pas analysés correctement par strtotime. – Hamish