Ce qui est Oracle du Format de Date par Défaut?
J'ai une DB Oracle, et je n'ai pas de contrôle sur le format de la date. Je veux savoir ce que le format de la date est de veiller à ce que des recherches comme
select * from search where search_date>='03/16/2016 00:00:00'
fonctionner comme prévu.
Vous devez vous connecter pour publier un commentaire.
Ne pas faire, vous êtes en s'appuyant sur l'implicite de conversion de type de données qui est voué à l'échec à un certain point.
Vous avez deux options:
1) Utiliser un bon ANSI SQL littéral date:
2) utiliser
to_date()
(outo_timestamp()
) et d'utiliser un format personnalisé.Avec
to_date()
vous devriez éviter de n'importe quel format qui est dépendant d'une langue. Utiliser les chiffres pour le mois, pas d'abréviations (p. ex.'Mar'
ou'Apr'
), car ils sont à nouveau compter sur le client langue.Plus de détails peuvent être trouvés dans le manuel:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF51062
Jamais compter sur l'implicite de conversion de type de données.
to_date
fonction comme c'est de faire une requête pourNLS_DATE_FORMAT
et puis exécutez le paresseux de la requête.SEARCH_DATE
estDATE
alors vous ne une conversion implicite de données si vous comparez avecTIMESTAMP
valeur qui devrait être évité par vos propres mots.Vous pouvez obtenir toutes les
NLS
les paramètres de session avec la requête:ou, si vous avez les autorisations
GRANT SELECT ON V_$PARAMETER TO YOUR_USERNAME;
, vous pouvez utiliser la commande:Si vous voulez juste le format de la date, alors vous pouvez le faire soit:
ou
Cependant, vous pouvez également utiliser ANSI date (ou timestamp) littéraux qui sont indépendant du format. ANSI littéral date est au format
DATE 'YYYY-MM-DD'
et un horodatage littérale est au formatTIMESTAMP 'YYYY-MM-DD HH24:MI:SS.FF9'
. Si votre requête serait:ou
TO_DATE
avec un format explicite modèle.Un DATE n'ont pas de n'importe quel format. Oracle ne pas stocker les dates dans le format que vous voyez. Il stocke en interne dans 7 octets avec chaque octet de stockage des différentes composantes de la datetime valeur.
À afficher, utiliser TO_CHAR avec une bonne MODÈLE de FORMAT.
Pour la comparaison, l'utilisation TO_DATE avec une bonne MODÈLE de FORMAT.
Ce que vous voyez en tant que format par par défaut, est votre paramètres régionaux spécifiques NLS paramètres.
Vous comparez un DATE avec un chaîne littérale. Toujours, explicitement convertir la chaîne en date à l'aide de TO_DATE et le bon masque de format.
Ou, si vous traitez uniquement avec la partie date et ne concerne pas la partie heure, puis utilisez le ANSI date littérale qui utilise un format fixe
DATE 'YYYY-MM-DD'
Vous êtes peut-être la chance d'obtenir un résultat en raison d'une implicite de conversion de type de données basé sur votre paramètres régionaux spécifiques NLS paramètres. Ne jamais compter sur l'implicite de conversion de type de données, il pourrait travailler pour vous, peut échouer pour d'autres, où la nls paramètres sont différents.
SELECT DUMP(date_column) FROM table_name
) et de Type 13 a 8 octets (SELECT DUMP(SYSDATE) FROM DUAL
).