Я разрабатываю модуль чата с JavaScript и php + mysql, и я храню данные чата в простой таблице с помощью: id, member1, member2, message, timestamp
. Столбец timestamp
double (14,4), где я храню отметку времени на микросекундах, например: 1330522898.3137;Ошибка сравнения двойного типа MySQL
Моей проблема: Когда я сравниваю эту метку время с другой, как
SELECT * FROM chat_rows WHERE timestamp >= 1330535168.9548
только на конкретных номерах, как этот выше, я получаю 0 строк с помощью оператора >=
хотя у меня есть строка с точное значение; Это подтверждается почти тот же запрос дифференцированной оператором =
:
SELECT * FROM chat_rows WHERE timestamp = 1330535168.9548
который возвращает одну строку;
Обходной путь для этого заключается в замене двойного (14,4) типа на varchar, но медленнее, чем double;
терпит неудачу Также только на этом сервере (мое развитие один): Apache/2.2.20 (Ubuntu) MySQL версии клиента: 5.1.58
На мой местный, кажется, что работает; - что такое Windows Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/0.9.8o Versiunea clientului MySQL: mysqlnd 5.0.8-DEV - 20102224 - $ Revision: 318113 $
Любые мысли?
Заранее благодарен!
Не можешь использовать 'десятичного (14,4)'? – a1ex07
Если вы примените его к строке, то сравните строки, она должна работать. Проблема в том, что 14,4 - это размер дисплея, но значение и сравнение выходят за рамки этого. Альтернативой является использование десятичного числа. –
Спасибо за помощь, это действительно сработало; Я все еще не понимал, почему это происходит, если у меня есть 14,4 двойных значения, и я сравниваю их с одним и тем же числом, почему сравнение должно идти дальше? –