La base de datos de MSSQL 2005 tiene la intercalación "German_Phonebook_BIN" (pero eso no es importante). La conexión a db se realiza a través de PDO y FreeTDS (usando PHP bajo Debian Squeeze). Cuando trato de seleccionar valores de fecha y hora de una tabla consigo resultados como:Formato de fecha y hora de PDO para MSSQL/dblib
Abr 1 2008 12: 00: 00: 000
Pero espero obtener
2008-01-01 00:00 : 00
(Tenga en cuenta que el tiempo 00:00:00 se transforma en 12:00:00, no sé por qué 00: 00 = 12: 00 ???) No hay forma de que yo pueda manipular las declaraciones SELECT
(para hacer una conversión con CONVERT
). No encontré ninguna opción en PDO para establecer un formato de fecha. SET DATEFORMAT
y SET LANGUAGE
antes de que se ejecute la consulta, esto tampoco afecta. ¿Alguien puede dar una pista de dónde se puede hacer esto (y solo se puede hacer) en PDO? (. Por cierto PEAR :: MBD2 devuelve columnas de fecha y hora en el formato esperado, pero MDB2 es horrible cuando se tiene que trabajar con UTF-8 y MSSQL)
bien, algo más de información (muestra sólo fragmentos importantes):
<?php
$this->_dsn = 'dblib:host=' . $this->_db['host'] . ';dbname=' . $this->_db['database'] . ';charset=UTF-8';
$this->_handle = new PDO($this->_dsn, $this->_db['user'], $this->_db['password']);
print_r($this->_handle->query("SELECT [date_column] FROM [some_table]"));
Este comportamiento no es normal. ¿Puede mostrar cómo selecciona esos valores y cómo los genera en PHP? –
Eche un vistazo a https://bugs.php.net/bug.php?id=54648 – rabudde
ugh, ya veo. --- –