2013-08-27 2 views
5

MySQL 5.6.4 и выше поддерживает дробные секунды для типа временного столбца. http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.htmlКак игнорировать дробные секунды с MySQL 5.6?

Но я хочу игнорировать часть дробных секунд для совместимости.

mysql> CREATE TABLE `t1` (`created` datetime(0) NOT NULL); 
Query OK, 0 rows affected (0.41 sec) 

mysql> INSERT INTO t1 set created = '2013-08-27 05:13:21.999'; 
mysql> INSERT INTO t1 set created = '2013-08-27 23:59:59.999'; 


mysql> select * from t1; 
+---------------------+ 
| created    | 
+---------------------+ 
| 2013-08-27 05:13:22 | 
| 2013-08-28 00:00:00 | 
+---------------------+ 
2 row in set (0.00 sec) 

Ожидаемый результат: «2013-08-27 05:13:21» и «2013-08-27 23:59:59».

Как сохранить тот же результат с предыдущей версией MySQL?

+0

, как вы говорите, ваш ожидается менее чем за 1 секунду? – logan

+0

Вы хотите, чтобы он отображал записи только на выбранном уровне? – logan

+0

Я хочу сохранить совместимость вычисления даты и времени, обновленный пример примера. – shoma

ответ

3

Попытка создать таблицу, как показано ниже:

CREATE TABLE t1 (dt DATETIME(6) NOT NULL); 

SQL Fiddle

+0

Он выглядит хорошим решением для моего дела. Я попробую с "ALTER TABLE t1 MODIFY' created' datetime (6); " – shoma

0

использование SUBTIME функция вычитания дробей времени ..

Попробуйте это ... вычесть микросекунду от исходного времени, затем конвертировать в формат даты ...

SELECT cast(SUBTIME(created,cast(concat('0:0:0.',(microsecond(created))) as time)) as datetime) from t1; 

я тестировал .. его работы .. PFB снимок .. enter image description here

+0

Это интересно, но слишком сложно использовать из кода. – shoma

+0

Нет, это не сработает. Проверьте http://sqlfiddle.com/#!9/22535/1/0 – 7alhashmi

+0

Его работа .. вы можете посмотреть мой снимок сейчас .. Я попробовал его в версии 5.2.40 ... – logan

Смежные вопросы