2012-06-18 14 views
5

me gustaría saber si existe alguna expresión más corta, que esto:MySQL expresión 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; 

quiero decir algo como:

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

espero que este es el esquema que quería ver:

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

Por favor, puesto que el esquema de la tabla. – b7kich

+0

@ b7kich Actualicé mi pregunta. –

+0

Gracias. Esperaba algo más parecido al resultado de 'Mostrar tabla de creación ',' pero lo esencial aquí es que tu columna 'posted' se escribe como DATETIME NOT NULL – b7kich

Respuesta

7

supongo que es una postedDATETIME. Puede usar 0.

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

es lo mismo que

posted = 0 
+0

más uno. Usé con TIMESTAMP. lo mismo :) – kitokid

0

que depende de su estructura, al crearlo, puede utilizar nulo por defecto y WH en haces un selecto que va a utilizar:

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

No puedo establecer el tipo de fecha y hora predeterminado, ¿es posible? ? –

+0

¿Cuál es su estructura ?, muéstrela – jcho360

+0

He probado esto y funciona (todavía no sé por qué 'publicado IS null' funciona y' posted = null' dont) –

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

+1 para usar 'max()' en lugar de 'order by' (pero no es lo mismo.) –

+0

es lo mismo que 'SELECT ID FROM orders WHERE posted = '0000-00-00 00:00:00' ORDER BY id DESC LIMIT 1;' –

+0

pero tengo que usar: '$ row ['max (id)'] 'en lugar de' $ row ['id'] 'después de buscarlo asociativo. –

Cuestiones relacionadas