Campo DateTime PHP/MSSQL no tirar correctamente

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Junio 30th, 2011, 12:36 pm

Mensajería instantánea mediante un script PHP en un servidor MSSQL. Simplemente, tengo una tabla con un campo datetime que parece se almacena por ejemplo 30-06-2011 12:20:58.360 pero cuando extraer esa columna y vuelva a ejecutar en otra consulta me sale el 30 de junio de 2011 12:20 PM automáticamente. No lo hago sin formato.

Código: [ 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'                


Parece que cuando me strtotime pierdo los 58 segundos causa recibo 2011-06-30 12: 20: 000000. Por lo tanto, creo que el de 2011 30 de Jun 12:20 PM está recibiendo strtotime. Im esperando alguien puede restringir la causa solución creo que te va a ser un servidor/os/o configuración de php.ini. Pero tal vez va a ser algo sencillo con la consulta o el código. Gracias.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Junio 30th, 2011, 12:36 pm

  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Junio 30th, 2011, 12:58 pm

Ive agregado mssql.datetimeconvert = Off a mi php.ini.

I ahora al menos obtener a los segundos. Por lo tanto, recibo 2011-06-30 12: 20: 58 pero todavía puede no coincidir con el tabla2 2011-06-30 12:20:58.360. ¿Hay una manera de cambiar el formato predeterminado PHP cuando apagar datetimeconvert?
  • devilwood
  • Silver Member
  • Silver Member
  • Avatar de Usuario
  • Registrado: Nov 18, 2007
  • Mensajes: 429
  • Status: Offline

Nota Junio 30th, 2011, 2:05 pm

Scratch. Quité la mssql.datetimeconver = left Off y justo volver a predeterminado. Mina no fue activado o desactivado.

Luego fue capaz de solucionar este problema utilizando el comando Convertir dentro de la consulta. El 121 es el código de estilo. Buscar CAST y CONVERT para MS SQL.

Código: [ 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'";


Así, Ive consiguió hacer una llamada extra y dejar que el controlador SQL regresar el formato de fecha necesarios para php. Además, no pude obtener CONVERT(datetime,DiscardedDate,121) para trabajar como supongo que porque el campo ya es una fecha y hora.

Espero que esto ayuda a alguien. No creo que una base de datos desea almacenar un valor, pero volver a otro. Creo que las conversiones deben conceder a la secuencia de comandos y no el sql. Principalmente porque con script puedo mostrar la fecha cualquier forma que necesito como puedo lo necesito muestra varias maneras diferentes. En general, creo que esta es la configuración de vista en el MSSQL server que puede ser configurado al mismo para otros DBs y no necesariamente MSs fallas, pero Id debe decir este problema junto con el hecho de que theres no SQL límite es realmente peeving me fuera a MSSQL server.

Publicar Información

  • Total de mensajes en este tema: 3 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 280 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC