2013-08-27 18 views
5

MySQL 5.6.4 e versioni successive supporta i secondi frazionari per il tipo di colonna temporale. http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.htmlCome ignorare i secondi frazionari con MySQL 5.6?

Ma voglio ignorare la parte dei secondi frazionari per la compatibilità.

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) 

Il risultato previsto è '2013-08-27 05:13:21' e '2013-08-27 23:59:59'.

Come si salva lo stesso risultato con la versione precedente di MySQL?

+0

come si fa a dire la vostra previsto in meno di 1 secondo? – logan

+0

Vuoi che visualizzi i record solo al livello selezionato? – logan

+0

Voglio mantenere la compatibilità del calcolo datetime, caso esemplificativo aggiornato in questione. – shoma

risposta

3

Tentare di creare la tabella come di seguito:

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

SQL Fiddle

+0

Sembra una buona soluzione per il mio caso. Proverò con "ALTER TABLE t1 MODIFY' created' datetime (6); " – shoma

0

uso SUBTIME funzione per sottrarre frazioni di tanto ..

Prova questo ... sottrarre il microsecondo dal momento originale, quindi convertire in formato data ...

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

ho provato .. il suo lavoro .. PFB istantanea .. enter image description here

+0

Questo è interessante, ma troppo complesso da usare dal codice. – shoma

+0

No, non funziona. Controlla http://sqlfiddle.com/#!9/22535/1/0 – 7alhashmi

+0

Funziona .. puoi guardare la mia istantanea ora .. l'ho provato nella versione 5.2.40 ... – logan

Problemi correlati