Vous pouvez utiliser TO_DATE fonction pour convertir NUMBER à DATE. Essayez le suivant:
SELECT TO_DATE(20150302,'YYYYMMDD')FROM DUAL
Qui downvoted? Expliquer votre opinion. Probablement parce que to_date() accepte uniquement les chaînes de caractères (aka "chaînes"), pas de numéros de 20150302 est un nombre, pas une chaîne de caractères. ce n'est pas correct. to_date() accepte de nombre. Exécutez la requête suivante et et voyez vous-même: sélectionnez to_date(20150302,'yyyymmdd') from dual; voir manuel: le premier paramètre de to_date() est déclarée comme char. Il n'existe pas de version de to_date() qui accepte un certain nombre. Si vous appelez avec un numéro, le mal implicite de conversion de type de données permettra de convertir ce nombre à un varchar avant d'appeler to_char. Donc to_date(20150302,'yyyymmdd') silencieusement exécuté comme to_date(to_char(20150302),'yyyymmdd') ce que vous dites à propos de la conversion implicite est correct. Mais ce n'est pas le point ici, le point de savoir si cette fonction accepte nombre ou pas. Comme on peut le voir, il n'a pas d'importance ce qui se passe derrière les coulisses(conversion implicite).
TO_DATE accepte char de CHAR, VARCHAR2, NCHAR, ou NVARCHAR2 type de données et les convertit en une valeur de DATE type de données.
Donc, convertir le nombre en chaîne de caractères, et d'appliquer to_date. Vous pouvez utiliser unique guillemets autour du nombre à convertir en chaîne.
SELECT TO_DATE('20150302','YYYYMMDD')FROM dual;
Rappelez-vous, une DATE n'a pas de format, ce que vous voyez est à des fins d'affichage. Si vous souhaitez afficher la date dans un format souhaité, puis utilisez TO_CHAR avec votre choix de format de modèle.
mais pourquoi vos requêtes ne sont pas de travail pour SÉLECTIONNER TO_DATE('1', 'YYYYMMDD') from dual; Comment est - '1' une date valide même? Et, "pas de travail" n'est pas un Oracle message d'erreur. J'ai été vérifier pour cela, sélectionnez TO_CHAR(TO_DATE(1,'J'),'JSP')from dual;
Vous pouvez essayer ceci:
ou
20150302
est un NOMBRE pas string.TO_DATE
accepte de chaîne. Vous forcez l'Oracle pour une implicite de conversion de type de données.OriginalL'auteur Stefan Yordanov
Vous pouvez utiliser TO_DATE fonction pour convertir
NUMBER
àDATE
. Essayez le suivant:Probablement parce que
to_date()
accepte uniquement les chaînes de caractères (aka "chaînes"), pas de numéros de20150302
est un nombre, pas une chaîne de caractères.ce n'est pas correct. to_date() accepte de nombre. Exécutez la requête suivante et et voyez vous-même: sélectionnez to_date(20150302,'yyyymmdd') from dual;
voir manuel: le premier paramètre de
to_date()
est déclarée commechar
. Il n'existe pas de version deto_date()
qui accepte un certain nombre. Si vous appelez avec un numéro, le mal implicite de conversion de type de données permettra de convertir ce nombre à unvarchar
avant d'appeler to_char. Doncto_date(20150302,'yyyymmdd')
silencieusement exécuté commeto_date(to_char(20150302),'yyyymmdd')
ce que vous dites à propos de la conversion implicite est correct. Mais ce n'est pas le point ici, le point de savoir si cette fonction accepte nombre ou pas. Comme on peut le voir, il n'a pas d'importance ce qui se passe derrière les coulisses(conversion implicite).
OriginalL'auteur Stanislovas Kalašnikovas
TO_DATE accepte char de
CHAR
,VARCHAR2
,NCHAR
, ouNVARCHAR2
type de données et les convertit en une valeur de DATE type de données.Donc, convertir le nombre en chaîne de caractères, et d'appliquer to_date. Vous pouvez utiliser unique guillemets autour du nombre à convertir en chaîne.
Rappelez-vous, une DATE n'a pas de format, ce que vous voyez est à des fins d'affichage. Si vous souhaitez afficher la date dans un format souhaité, puis utilisez TO_CHAR avec votre choix de format de modèle.
Lire plus sur TO_DATE.
Comment est - '1' une date valide même? Et, "pas de travail" n'est pas un Oracle message d'erreur.
J'ai été vérifier pour cela, sélectionnez TO_CHAR(TO_DATE(1,'J'),'JSP')from dual;
OriginalL'auteur Lalit Kumar B