πŸ“… Как Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ SQL? πŸ“Š

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ Π² SQL ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DATEDIFF().

SELECT DATEDIFF(day, start_date, end_date) AS day_difference;

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ 'start_date' ΠΈ 'end_date' Π½Π° ваши Π΄Π°Ρ‚Ρ‹ для вычислСния Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² днях.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ Π² SQL

ВычислСниС количСства Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ вычислСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL запросов.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DATEDIFF

Ѐункция DATEDIFF позволяСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ измСрСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, днях, мСсяцах, Π³ΠΎΠ΄Π°Ρ… ΠΈ Ρ‚.Π΄.). Π’ случаС нашСй Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ, поэтому ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ измСрСния "day".

        
            SELECT DATEDIFF(day, '2021-01-01', '2022-01-01') AS days_diff;
        
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DATEDIFF, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² днях ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ '2021-01-01' ΠΈ '2022-01-01'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн Π² столбцС с ΠΈΠΌΠ΅Π½Π΅ΠΌ "days_diff".

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ИспользованиС вычитания Π΄Π°Ρ‚

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ способом вычислСния количСства Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ Π² SQL являСтся простоС Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚ Π΄Ρ€ΡƒΠ³ ΠΈΠ· Π΄Ρ€ΡƒΠ³Π°.

        
            SELECT CAST('2022-01-01' AS DATE) - CAST('2021-01-01' AS DATE) AS days_diff;
        
    

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Π΅ Π΄Π°Ρ‚Ρ‹ ΠΊ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… "DATE" с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CAST ΠΈ Π·Π°Ρ‚Π΅ΠΌ просто Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΡ… Π΄Ρ€ΡƒΠ³ ΠΈΠ· Π΄Ρ€ΡƒΠ³Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн Π² столбцС "days_diff".

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TIMESTAMPDIFF

Ѐункция TIMESTAMPDIFF позволяСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ измСрСния, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DATEDIFF, ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… "TIMESTAMP".

        
            SELECT TIMESTAMPDIFF(DAY, '2021-01-01 00:00:00', '2022-01-01 00:00:00') AS days_diff;
        
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TIMESTAMPDIFF, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² днях ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ '2021-01-01 00:00:00' ΠΈ '2022-01-01 00:00:00'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн Π² столбцС "days_diff".

ΠœΠ΅Ρ‚ΠΎΠ΄ 4: ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ EXTRACT ΠΈ DATE_PART

Ѐункция EXTRACT позволяСт ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ части Π΄Π°Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³ΠΎΠ΄, мСсяц ΠΈΠ»ΠΈ дСнь. Ѐункция DATE_PART Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ части Π΄Π°Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… "TIMESTAMP". Π‘ использованиСм этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ.

        
            SELECT EXTRACT(DAY FROM '2022-01-01'::DATE) - EXTRACT(DAY FROM '2021-01-01'::DATE) AS days_diff;
        
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сначала ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ дСнь ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EXTRACT, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния Π΄Ρ€ΡƒΠ³ ΠΈΠ· Π΄Ρ€ΡƒΠ³Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн Π² столбцС "days_diff".

Π˜Ρ‚ΠΎΠ³

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для вычислСния количСства Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ Π² SQL. ΠœΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DATEDIFF, TIMESTAMPDIFF, Π° Ρ‚Π°ΠΊΠΆΠ΅ простоС Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях, поэтому Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² SQL

Π£Ρ€ΠΎΠΊ 33. SQL. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚Π°ΠΌΠΈ.

07 - Π Π°Π±ΠΎΡ‚Π° с Π”Π°Ρ‚ΠΎΠΉ ΠΈ Π’Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ - Π£Ρ€ΠΎΠΊΠΈ PostgreSQL

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ столбик Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ SQL: простыС шаги для успСха πŸ”

πŸ“… Как Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ SQL? πŸ“Š

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ связь Π² SQL