По причинам, которые слишком неясны для вхождения, у меня есть представление миллисекунды определенного времени, и мне заполнили mysql базу данных Метками времени mySql, и мне любопытно, если возможно просто сделать собственные сравнения в sql такой как select * from myTable where time_stamp_column > 1264665600000;
или что-то вдоль тех строк.
Я запускал некоторые тесты, и результаты являются довольно странными. Это не жалуется, но возвращает строку, которые не соответствуют критериям.
Заранее спасибо.
[РЕДАКТИРОВАНИЕ] хорошо, если использование миллисекунд в mySql является обреченным на неудачу, что является лучшим способом сравнить даты, предполагая, что я начинаю в millis и нахожусь в Java.
Да, работает точно так, как задокументировано.
. _ замены
возвращает новый именной кортеж, он не изменяет оригинал, поэтому нужно написать следующее:
p = p._replace(x=33)
См. здесь: somenamedturple. _ замените (kwargs) для получения дополнительной информации.
-121--1184498-Типичный метод, которым большинство людей научились обращаться с исключениями, уязвим для отсутствующих в ловушке исключений:
eval { some code here };
if( $@ ) { handle exception here };
Можно сделать:
eval { some code here; 1 } or do { handle exception here };
Это защищает от пропуска исключения из-за того, что $ @
забит, но он все еще уязвим для потери значения $ @
.
Чтобы быть уверенным в отсутствии исключения, при проведении оценки необходимо локализовать $ @
;
eval { local $@; some code here; 1 } or do { handle exception here };
Это все тонкая ломка, и профилактика требует большого количества эзотерического шаблона.
В большинстве случаев это не проблема. Но я был сожжен за исключением поедания деструкторов объектов в реальном коде. Отладка проблемы была ужасной.
Ситуация явно плохая. Посмотрите на все модули на CPAN, построенные обеспечивают достойную обработку исключений.
Ошеломляющие отклики в пользу Попробуйте:: Крошка в сочетании с тем, что Try:: Крошка не «слишком умна наполовину», убедили меня попробовать это. Такие вещи, как TryCatch и Исключение:: Класс:: TryCatch , Ошибка , вкл и вкл, слишком сложны для доверия. Попробуйте:: Крошка - это шаг в правильном направлении, но у меня все еще нет легкого класса исключений для использования.
-121--2537102-Точность в миллисекундах не получается, но, судя по нулям в конце примера, она может и не понадобиться.
Используйте FROM _ UNIXTIME для преобразования метки времени Unix в MySQL TIMESTAMP. Похоже, у вас есть миллисекунды с эпохи Unix, поэтому просто делите их на 1000, чтобы преобразовать:
SELECT * FROM myTable WHERE time_stamp_column > FROM_UNIXTIME(1264665600000/1000);
Возможно, вам придется скорректировать проблемы часового пояса/DST здесь, так как метки времени SQL являются, совершенно удручающе, местным временем.
Видимо, это известная ошибка: ошибка 8523 . См. один раз на временной метке (миллисекунды) ...
в справедливости ради, MySQL действительно поставил способ сохранить миллионные и Микро секунды в десятичном поле
десятичное (17,3)
, и это также Запрос, как будто это был временной Но почему не возможно хранить в ADateTime
илиTimestamp
поле?
Нет, столбцы метки времени и точечных данных не хранят значения с миллисекундной точностью, к сожалению. Работа для этого - использовать колонну Bigint и иметь ваши временные метки с соответствующим количеством миллисекундных мест, то есть. 1264808431000. К сожалению, это означает, что любая логика сравнения в вашем заявлении или в MySQL должна быть на основе Bigint.