sql >> Database teknologi >  >> RDS >> Mysql

DAYOFWEEK() Eksempler – MySQL

Du kan bruge DAYOFWEEK() funktion i MySQL for at returnere ugedagen fra en dato.

I denne sammenhæng er en returværdi på 1 svarer til søndag, 2 svarer til mandag osv.

Denne artikel indeholder eksempler til demonstration.

Syntaks

Syntaksen ser sådan ud:

DAYOFWEEK(date)

Hvor date er den datoværdi, som du vil have ugedagen returneret fra.

Eksempel

Her er et eksempel til at demonstrere.

SELECT DAYOFWEEK('2019-01-01') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      3 |
+--------+

Vi kan køre dette sammen med DAYNAME() funktion for at se, hvilken dag det svarer til:

SET @date = '2019-01-01';
SELECT 
    @date,
    DAYNAME(@date) AS 'Day Name',
    DAYOFWEEK(@date) AS 'Day of Week';

Resultat:

+------------+----------+-------------+
| @date      | Day Name | Day of Week |
+------------+----------+-------------+
| 2019-01-01 | Tuesday  |           3 |
+------------+----------+-------------+

DAYOFWEEK() vs. DAYOFMONTH()

Her er et eksempel for at demonstrere forskellen mellem DAYOFWEEK() og DAYOFMONTH() funktioner.

SET @date = '2019-01-20';
SELECT 
    @date,
    DAYNAME(@date) AS 'Day Name',
    DAYOFWEEK(@date) AS 'Day of Week',
    DAYOFMONTH(@date) AS 'Day of Month';

Resultat:

+------------+----------+-------------+--------------+
| @date      | Day Name | Day of Week | Day of Month |
+------------+----------+-------------+--------------+
| 2019-01-20 | Sunday   |           1 |           20 |
+------------+----------+-------------+--------------+

DAYOFMONTH() funktion returnerer en værdi mellem 1 og 31 (eller 0 for datoer med en dag på nul), der repræsenterer dagen i måneden. Den nulstilles til 1 i begyndelsen af ​​hver måned.

DAYOFWEEK() funktion returnerer på den anden side en værdi mellem 1 og 7 . Den nulstilles til 1 i starten af ​​hver uge.

Et databaseeksempel

Her gør vi noget, der ligner de foregående eksempler, bortset fra at dette eksempel bruger data fra en database:

USE sakila;
SELECT
  payment_date AS 'Date/Time',
  DAYNAME(payment_date) AS 'Day Name',
  DAYOFWEEK(payment_date) AS 'Day of Week'
FROM payment
WHERE payment_id = 1;

Resultat:

+---------------------+-----------+-------------+
| Date/Time           | Day Name  | Day of Week |
+---------------------+-----------+-------------+
| 2005-05-25 11:30:37 | Wednesday |           4 |
+---------------------+-----------+-------------+

Aktuel dato/klokkeslæt

Her er et eksempel på udtrækning af dagsdelen fra den aktuelle dato og klokkeslæt (som returneres ved hjælp af NOW() funktion).

SELECT 
    NOW(),
    DAYOFWEEK(NOW());

Resultat:

+---------------------+------------------+
| NOW()               | DAYOFWEEK(NOW()) |
+---------------------+------------------+
| 2018-06-26 07:42:31 |                3 |
+---------------------+------------------+

En anden måde at gøre dette på er at bruge CURDATE() funktion, som kun returnerer datoen (men ikke klokkeslættet).

SELECT 
    CURDATE(),
    DAYOFWEEK(CURDATE());   

Resultat:

+------------+----------------------+
| CURDATE()  | DAYOFWEEK(CURDATE()) |
+------------+----------------------+
| 2018-06-26 |                    3 |
+------------+----------------------+


  1. Forskel mellem tekst og varchar (karakter varierende)

  2. Datokolonner i SQL-Server (MSSQL-JDBC 3.0), der kører under Java 1.7.0, er hentet som 2 dage i fortiden

  3. At iterere et ResultSet ved hjælp af JDBC for Oracle tager meget tid omkring 16s?

  4. Fejlfinding af SQL Server-replikering