Converteer een stringdatum in datetime in Oracle

Hoe kan ik deze datum van de snaar naar datetime in orakel converteren.

2011-07-28T23:54:14Z

Als u deze code gebruikt, wordt een fout gegenereerd:

TO_DATE('2011-07-28T23:54:14Z',  'YYYY-MM-DD HH24:MI:SS')

Hoe kan dit worden gedaan?

Error report:
SQL Error: ORA-01861: literal does not match format string
01861. 00000 -  "literal does not match format string"
*Cause:    Literals in the input must be the same length as literals in
           the format string (with the exception of leading whitespace).  If the
           "FX" modifier has been toggled on, the literal must match exactly,
           with no extra whitespace.
*Action:   Correct the format string to match the literal.

Update: -

TO_DATE ('2011-07-28T23: 54: 14Z', 'YYYY-MM-DD "T" HH24: MI: SS "Z"')

Ik zie alleen de datum niet de tijd in de kolom

28-JUL-11
18
@ p.campbell maar in mijn geval. De datum van de string is in een ander formaat met t en z, dus is er een manier om dat rechtstreeks naar datetime-formaat te converteren. Of ik moet het analyseren om het duidelijker te maken en dat dan omzetten naar datetime-formaat ..
toegevoegd de auteur arsenal, de bron
Plaats uw fout.
toegevoegd de auteur Jordan Parmer, de bron
Uw indeling heeft geen T- en Z-letters of heb ik ongelijk? Probeer 2011-07-28 23:54:14 te ontleden, als dit slaagt, gebruik dan reguliere expressie om uw invoerstrings te normaliseren.
toegevoegd de auteur JMelnik, de bron

3 antwoord

Try this: TO_DATE('2011-07-28T23:54:14Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')

40
toegevoegd
Het werkt prima .. Maar ik zie de Date alleen niet in de orakeltafel .. Het resultaat dat ik kreeg is 28-JUL-11, niet precies zoals ik wilde .. Waarom gebeurt het? En ik verklaar het gegevenstype als datum.
toegevoegd de auteur arsenal, de bron
Wat is er mis met deze sytax TO_DATE ('2011-10-25 21: 48: 01.585', 'YYYY-MM-DD HH24: MI: SS')
toegevoegd de auteur arsenal, de bron
@lining, het moet TO_DATE zijn ('2011-10-25 21: 48: 01.585', 'YYYY-MM-DD HH24: MI: SS.FF3') , FFn kan n = 1 hebben ..9, afhankelijk van het aantal plaatsen achter de komma dat je hebt.
toegevoegd de auteur Krzysztof Jędrzejewski, de bron
@RaihanJamal, dat is maar het standaardformaat voor de datum. De tijd wordt ook daadwerkelijk in dat veld opgeslagen. Je kunt het zien met behulp van de TO_CHAR-methode.
toegevoegd de auteur Forgotten Semicolon, de bron
Het ziet er naar uit dat het ook milliseconden in de tijd heeft. Als dit formaat in dezelfde gegevensset staat als het item in het OP, moet u het eerder gegeven advies volgen om uw gegevens te standaardiseren.
toegevoegd de auteur Forgotten Semicolon, de bron

U kunt een cast gebruiken om de datumresultaten te bekijken

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

 select to_char(to_date('17-MAR-17 06.04.54','dd-MON-yy hh24:mi:ss'), 'mm/dd/yyyy hh24:mi:ss') from dual;
</div> </div>
0
toegevoegd

Hé, ik had hetzelfde probleem. Ik heb geprobeerd '2017-02-20 12:15:32' varchar om te zetten naar een datum met TO_DATE ('2017-02-20 12:15:32', 'YYYY-MM-DD HH24: MI: SS ') en alles wat ik ontving was 2017-02-20 de tijd verdween

Mijn oplossing was om TO_TIMESTAMP ('2017-02-20 12:15:32', 'YYYY-MM-DD HH24: MI: SS') te gebruiken nu de tijd niet verdwijnt.

0
toegevoegd
Dat is waarschijnlijk alleen vanwege de weergave-indeling van uw SQL-client. Een Oracle DATE kan ook een tijd bevatten, zodat TO_DATE niet noodzakelijkerwijs het tijdsgedeelte verlaagt.
toegevoegd de auteur Jon Heller, de bron