ID: 34158 Updated by: [EMAIL PROTECTED] Reported By: aesthete at telecenter dot ru -Status: Open +Status: Feedback Bug Type: InterBase related Operating System: Linux 2.6.12 (Fedora Core 3) PHP Version: 4.4.0 New Comment:
Did you try PDO_FIREBIRD ? Previous Comments: ------------------------------------------------------------------------ [2006-02-05 11:57:01] aesthete at telecenter dot ru In php-5.1.2 this bug too ... ------------------------------------------------------------------------ [2006-01-17 15:05:21] c dot coppari at sintekno dot it I think the problem is in mktime() function, at line: timestamp = mktime(&t); This is because the variable t for SQL_TYPE_TIME doesn't get the proper values for month, year and day. The mktime() function tries to normalize the date, however with libc6 this result in an incorrect time. I used this patch: case SQL_TYPE_TIME: isc_decode_sql_time((ISC_TIME *) data, &t); format = IBG(timeformat); t.tm_mday = 16; t.tm_mon = 0; t.tm_year = 106; break; Forcing the day, month and year with a correct value solved the problem for me. I don't know if this is the correct behaviour of mktime(). ------------------------------------------------------------------------ [2005-11-28 12:17:17] [EMAIL PROTECTED] [20 Sep 11:13pm CEST] [EMAIL PROTECTED] Can you please give a try for the PDO driver? ------------------------------------------------------------------------ [2005-08-16 21:37:10] aesthete at telecenter dot ru Description: ------------ My previos message was about Wrong Time conersion from db: http://bugs.php.net/bug.php?id=34037&edit=1 I solved my problem when comment t.tm_isdst = -1; in interbase.c I don't know is there bug of php or interbase but i have some ideas abot it. In interbase.c we have some code: /* XXX - Might have to remove this later - seems that isc_decode_date() always sets tm_isdst to 0, sometimes incorrectly (InterBase 6 bug?) */ t.tm_isdst = -1; As you say in your comment: "isc_decode_date() always sets tm_isdst to 0" ... thats true. But in gds.cpp (firebird 1.5.2 source) nothing said about changeing tm_isdst (in all gds.cpp) to any value Except for 0 in memset(times, 0, sizeof(*times)) instructions. It always return tm_isdst = 0 in all api functions where "struct tm *times" used as argument! I dont know why you do t.tm_isdst = -1; Therefore strftime(string_data, sizeof(string_data), format, &t) cannot return right formated time string. May be it php bug ?) P.S.: Sorry my english. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34158&edit=1