sql AIME PAS la syntaxe
J'ai besoin de filtre basé sur un horodatage et voudrais obtenir tout au sein d'un certain jour. Les horodateurs sont comme ceci: 02/06/2014 7:45:59 AM
ou traduits 2014-02-06 07:45:59
select *
from P_FAR_SBXD.T_CLAIM_SERVICE_TYP_DIM
where service_type_id = 134469888 and valid_from_tsp not like '2014-02-06 %'
Lorsque j'exécute cette requête, je suis retourné l'erreur: Partial String matching requires character operands
À la recherche de cette erreur, on m'a donné The user used the partial string matching operator (LIKE) with an argument that was not a character string.
Si ce que je peux utiliser pour correspondre à une date? edit: ou dans ce cas, pas une date?
Sont valid_from_tsp un timestamp ou une chaîne de caractères? Si c'est un timestamp, vous devriez utiliser la fonction date. Je ne sais pas teradata, mais quelque chose comme:
Quel est le type de données de
timestamp
cast(valid_from_tsp as date) = '2014-02-06'
Quel est le type de données de
valid_from_tsp
?timestamp
02/19/2014 7:45:59 AM
OriginalL'auteur staples | 2014-05-16
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure de les jeter à une date et comparer votre choix de date, quelque chose comme;
EDIT: Si vous avez une grande table, cette requête ne pas utiliser les index. Si c'est important, il suffit de faire un test de portée entre minuit et prochain minuit au lieu;
Hm, qui devrait fonctionner, difficile de dire ce qui va mal. Les lignes ont id 134469888 et une autre date?
J'ai vérifié mes données une fois de plus, j'ai eu tort, et il fonctionne
Ce serait inefficace dans de longues listes, que le CASTING sera appliquée à toutes les valeurs de valid_from_tsp avant le traitement de la logique, la négation de toute indexation.
Vrai, ajout d'une version qui fait une vérification qui peut être pré-calculé.
OriginalL'auteur Joachim Isaksson
Ce qui suit est une meilleure façon d'exprimer la condition date:
ou:
La différence est importante. En général, lorsque vous avez une fonction sur une colonne, la base de données n'utilise pas l'index. Si ces formes d'utiliser un index sur la colonne. Le meilleur indice de cette requête est
T_CLAIM_SERVICE_TYP_DIM(service_type_id, valid_from_tsp)
.OriginalL'auteur Gordon Linoff
utilisation
OriginalL'auteur user3620114
COMME opérateur pour le texte.
Juste une supposition (vous n'avez pas à fournir de la structure de la table), mais probablement
valid_from_tsp
n'est pas une colonne de type varchar, mais un timestamp ou la colonne de la date.Ainsi , au lieu de
vous devez utiliser ce:
OriginalL'auteur filiprem