La sélection de mysql vide les champs datetime
Est-il un meilleur moyen pour sélectionner vide les champs datetime que cela?
SELECT * FROM `table` WHERE `datetime_field` = '0000-00-00 00:00:00'
Vous devez vous connecter pour publier un commentaire.
Mieux dans quel sens? Cette requête est tout ce que vous lui demandez et, lorsqu'il y a un indice sur
datetime_field
, c'est aussi rapide que ça va arriver.Si vous êtes inquiet au sujet de la requête de recherche "laid", ne pas l'être. Son intention est très claire.
La seule amélioration possible vous pourrait envisager est d'utiliser des valeurs Null pour ces zéro-date/heure des lignes, dans ce cas, votre requête devient:
C'est ce que je ferais avec conforme aux normes SGBD. Ma compréhension est que MySQL peut représentent de véritables NULL les champs datetime dans cette horrible manière, dans ce cas, je suppose que le
IS NULL
peut ne pas fonctionner.SELECT * FROM db.table WHERE UNIX_TIMESTAMP(datetime_field) = 0
J'aime ce code, car il n'a pas seulement des captures zéro "dates" (par exemple, '0000-00-00 00:00:00') est également captures "de zéros dans les dates" (par ex. '2010-01-00 00:00:00')
À condition que votre date/datetime colonne n'est PAS NULL, vous pouvez simplement utiliser:
MySQL va sélectionner les colonnes que l'égalité '0000-00-00 00:00:00' pour vous.
Note: Si vous n':
MySQL renvoie 0 (faux), mais cette déclaration sera vrai lorsqu'il est utilisé comme partie de la clause where.
De la manuel
Ou vous pouvez tout simplement faire :
J'utilise ceci:
Comme une autre option, j'ai vu:
Permettez-moi de mettre un avertissement, je ne suis pas sûr de ce que cela va faire. Mais ce serait vraiment cool si cela a fonctionné.