sql >> Databasteknik >  >> RDS >> Oracle

2 sätt att få dagen från en dejt i Oracle

Nedan finns två funktioner som kan användas för att returnera dagen från ett datum i Oracle Database.

EXTRACT() Funktion

EXTRACT(datetime) Funktionen används för att extrahera olika datetime-delar från ett datetime-värde. Detta inkluderar dagen.

Här är ett exempel:

SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL;

Resultat:

25

Det är DAY nyckelord som extraherar dagdelen från datumet. Vi kan få andra datumdelar genom att ändra det till det relevanta sökordet. Till exempel YEAR , MONTH , HOUR , MINUTE , etc.

Vi kan också använda funktionen med andra datetime-värden, såsom TIMESTAMP , etc.

TO_CHAR(datetime) Funktion

Vi kan också använda den TO_CHAR(datetime) fungera som en alternativ metod för att få dagen från ett datum.

Den här funktionen accepterar datetime- eller intervallvärdet som dess första argument och en formatmodell som dess andra argument. Funktionen konverterar sedan värdet till en datatyp VARCHAR2 i det angivna formatet.

Formatmodellen anger formatet som datum/intervallvärdet ska returneras för. Formatmodellen består av ett eller flera formatelement. Detta gör det möjligt för oss att noggrant utforma resultaten för att återspegla vårt önskade format.

Om vi ​​bara vill returnera dagen kan vi använda ett av formatelementen för att extrahera dagen.

Dag i månaden

För att få dagen i månaden (mellan 1-31), använd DD formatelement:

SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL;

Resultat:

03

Heldagsnamn

För att få hela dagens namn, använd DAY :

SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL;

Resultat:

SATURDAY

Short Day Name

För att få det förkortade dagsnamnet, använd DY :

SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL;

Resultat:

SAT

Årets dag

För att få årets dag (mellan 1-366), använd DDD formatelement:

SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL;

Resultat:

276

Veckodag

För att få veckodag (mellan 1-7), använd D formatelement:

SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;

Resultat:

6

Detta formatelement beror på sessionens NLS-territorium. Värdet på mitt systems NLS_TERRITORY parametern är AUSTRALIA , och därför anses lördag vara den sjätte dagen i veckan.

Så här händer om jag ändrar värdet på min NLS_TERRITORY parameter till AMERICA och kör samma fråga igen:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;

Resultat:

7

Den här gången anses lördagen vara den sjunde dagen i veckan.


  1. Ingen dialektmappning för JDBC-typ:-9

  2. Vilket är det bästa sättet att versionskontrollera mina lagrade SQL-serverprocedurer?

  3. Hitta avståndet mellan två punkter med hjälp av latitud och longitud i mysql

  4. Min MySQL-databas är slut på diskutrymme