2012-06-18 12 views
5

Vorrei sapere se esiste una qualsiasi espressione più breve, di questo:mysql espressione equivalente a '0000-00-00 00:00:00'

'0000-00-00 00:00:00' 


SELECT id FROM orders WHERE posted='0000-00-00 00:00:00' ORDER BY id DESC LIMIT 1; 

voglio dire qualcosa come:

SELECT id FROM orders WHERE posted=null ORDER BY id DESC LIMIT 1; 

Spero che questo è lo schema che volevi vedere:

array(19) { 
    ["TABLE_CATALOG"]=> 
    NULL 
    ["TABLE_SCHEMA"]=> 
    string(13) "teleprintfejl" 
    ["TABLE_NAME"]=> 
    string(13) "megrendelesek" 
    ["COLUMN_NAME"]=> 
    string(7) "posted" 
    ["ORDINAL_POSITION"]=> 
    string(2) "20" 
    ["COLUMN_DEFAULT"]=> 
    NULL 
    ["IS_NULLABLE"]=> 
    string(2) "NO" 
    ["DATA_TYPE"]=> 
    string(8) "datetime" 
    ["CHARACTER_MAXIMUM_LENGTH"]=> 
    NULL 
    ["CHARACTER_OCTET_LENGTH"]=> 
    NULL 
    ["NUMERIC_PRECISION"]=> 
    NULL 
    ["NUMERIC_SCALE"]=> 
    NULL 
    ["CHARACTER_SET_NAME"]=> 
    NULL 
    ["COLLATION_NAME"]=> 
    NULL 
    ["COLUMN_TYPE"]=> 
    string(8) "datetime" 
    ["COLUMN_KEY"]=> 
    string(0) "" 
    ["EXTRA"]=> 
    string(0) "" 
    ["PRIVILEGES"]=> 
    string(31) "select,insert,update,references" 
    ["COLUMN_COMMENT"]=> 
    string(0) "" 
} 
+0

Si prega di inviare lo schema di quel tavolo. – b7kich

+0

@ b7kich Ho aggiornato la mia domanda. –

+0

Grazie. Mi aspettavo qualcosa di più simile all'output di 'Show create table 'order'', ma la cosa essenziale qui è che la colonna' postato' è digitata come DATETIME NOT NULL – b7kich

risposta

7

Credo che posted è un DATETIME. È possibile utilizzare 0.

posted = '0000-00-00 00:00:00' 

è lo stesso di

posted = 0 
+0

più uno. Ho usato con TIMESTAMP. lo stesso :) – kitokid

0

che è fino a vostra struttura, al momento della creazione, è possibile utilizzare null come predefinito e wh it si effettua una selezione che si intende utilizzare:

SELECT id FROM orders WHERE posted IS null ORDER BY id DESC LIMIT 1; 

EDIT:

mysql> create table tiempo (fecha datetime); 
Query OK, 0 rows affected (0.04 sec) 

mysql> insert into tiempo values(); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from tiempo; 
+-------+ 
| fecha | 
+-------+ 
| NULL | 
+-------+ 
1 row in set (0.00 sec) 

mysql> insert into tiempo values ('2000-02-02 02:02:02'); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from tiempo; 
+---------------------+ 
| fecha    | 
+---------------------+ 
| NULL    | 
| 2000-02-02 02:02:02 | 
+---------------------+ 
2 rows in set (0.00 sec) 

mysql> select * from tiempo where fecha is not null; 
+---------------------+ 
| fecha    | 
+---------------------+ 
| 2000-02-02 02:02:02 | 
+---------------------+ 
1 row in set (0.00 sec) 
+0

Non posso impostare il valore predefinito per tipo datetime, è possibile ? –

+0

qual è la vostra struttura ?, mostratelo – jcho360

+0

Ho provato questo e funziona (ancora non so perché 'postato IS null' funziona e' postato = null' non) –

0
SELECT max(id) as id FROM orders WHERE posted=0; 
+0

+1 per usare 'max()' invece di 'ordinare per' (ma non è la stessa cosa.) –

+0

è uguale a "SELECT id FROM orders WHERE posted = '0000-00-00 00:00:00' ORDER BY id DESC LIMIT 1;' –

+0

ma devo usare: '$ row ['max (id)'] 'invece di' $ row ['id'] 'dopo averlo associato associativo. –

Problemi correlati