MySQL Date вычисление
Расчет даты
На этой странице мы показали расширенный расчет даты MySQL с использованием следующих функций:
Функция CURDATE (), которая возвращает текущую дату компьютера, функция YEAR (), которая возвращает год указанной даты, функция MONTH (), которая возвращает месяц указанной даты, функция DAY (), которая возвращает день указанной даты. date, функция RIGHT (), которая возвращает количество символов, указанное в функции из заданной строки или даты. Часть выражения, которая сравнивает результаты от функции RIGHT (), оценивает 1 или 0.
Пример:
Пример таблицы: издатель
Код:
SELECT pub_name, estd, CURDATE(),
YEAR(estd),MONTH(estd),
DAY(estd),(RIGHT(CURDATE(),5)<RIGHT(estd,5)) AS ‘return’
FROM publisher;
объяснение
Приведенный выше оператор MySQL возвращает имя издателя, дату создания, текущую дату, год создания, месяц создания, день создания и столбец возврата, который рассчитывается с помощью RIGHT ().
Пример вывода:
mysql> SELECT pub_name, estd, CURDATE (), -> ГОД (ESTD), МЕСЯЦ (ESTD), -> ДЕНЬ (estd), (ПРАВО (CURDATE (), 5) <ПРАВО (estd, 5)) КАК «возврат» -> ОТ издателя; + ------------------------------ + ------------ + ----- ------- + ------------ + ------------- + ----------- + --- ----- + | pub_name | есть | КУРДАТА () | ГОД (ESTD) | МЕСЯЦ (ESTD) | ДЕНЬ (ESTD) | возврат | + ------------------------------ + ------------ + ----- ------- + ------------ + ------------- + ----------- + --- ----- + | Публикация Jex Max | 1969-12-25 | 2015-04-04 | 1969 | 12 | 25 | 1 | | Публикация БПП | 1985-10-01 | 2015-04-04 | 1985 | 10 | 1 | 1 | | Нью Гарролд Публикация | 1975-09-05 | 2015-04-04 | 1975 | 9 | 5 | 1 | | Ультра Пресс Инк | 1948-07-10 | 2015-04-04 | 1948 | 7 | 10 | 1 | | Горная публикация | 1975-01-01 | 2015-04-04 | 1975 | 1 | 1 | 0 | | Летняя ночь Публикация | 1990-12-10 | 2015-04-04 | 1990 | 12 | 10 | 1 | | Pieterson Grp. издателей | 1950-07-15 | 2015-04-04 | 1950 | 7 | 15 | 1 | | Роман Издатель ООО | 2000-01-01 | 2015-04-04 | 2000 | 1 | 1 | 0 | + ------------------------------ + ------------ + ----- ------- + ------------ + ------------- + ----------- + --- ----- + 8 рядов в наборе (0,00 сек)
Примечание . Поскольку используется функция CURDATE (), ваш вывод может отличаться от показанного.
PHP скрипт
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-date-calculation - php mysql examples | w3resource</title>
<meta name="description" content="example-date-calculation - php mysql examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>List of publishers with date , year and month of establishment of the concerned publishing house, current date and
and value against the expression RIGHT(CURDATE(),5) < RIGHT(estd,5) as 'return':</h2>
<table class='table table-bordered'>
<tr>
<th>Publisher's name</th><th>Date of establishment</th><th>Current date</th><th>Year of establishment</th><th>Month of establishment</th><th>Day of establishment</th><th>return</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT pub_name, estd, CURDATE(),YEAR(estd),MONTH(estd),DAY(estd),(RIGHT(CURDATE(),5)<RIGHT(estd,5))
AS "return" FROM publisher') as $row) {
echo "<tr>";
echo "<td>" . $row['pub_name'] . "</td>";
echo "<td>" . $row['estd'] . "</td>";
echo "<td>" . $row['CURDATE()'] . "</td>";
echo "<td>" . $row['YEAR(estd)'] . "</td>";
echo "<td>" . $row['MONTH(estd)'] . "</td>";
echo "<td>" . $row['DAY(estd)'] . "</td>";
echo "<td>" . $row['return'] . "</td>";
echo "<td>" . $row['return'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>
MySQL Date вычитание
Вычитание даты
Далее мы обсудили расширенное вычитание даты в MySQL с использованием функций CURDATE (), YEAR () и RIGHT ().
Пример:
Пример таблицы: издатель
Код:
SELECT pub_name, estd,CURDATE(),
(YEAR(CURDATE())-YEAR(estd)) -
(RIGHT(CURDATE(),5)<RIGHT(estd,5))
AS Age FROM publisher;
объяснение
Чтобы вычислить возраст каждого издателя, вычисляется разница дат между текущей датой и датой estd, а затем вычитается 1 (вычисляется как (RIGHT (CURDATE (), 5) <RIGHT (estd, 5))), если текущий месяц и день раньше, чем месяц и день.
Пример вывода:
mysql> SELECT pub_name, estd, CURDATE (), -> (ГОД (CURDATE ()) - ГОД (estd)) - -> (ПРАВО (CURDATE (), 5) <ПРАВО (estd, 5)) -> Как возраст от издателя; + ------------------------------ + ------------ + ----- ------- + ------ + | pub_name | есть | КУРДАТА () | Возраст | + ------------------------------ + ------------ + ----- ------- + ------ + | Публикация Jex Max | 1969-12-25 | 2015-04-01 | 45 | | Публикация БПП | 1985-10-01 | 2015-04-01 | 29 | | Нью Гарролд Публикация | 1975-09-05 | 2015-04-01 | 39 | | Ультра Пресс Инк | 1948-07-10 | 2015-04-01 | 66 | | Горная публикация | 1975-01-01 | 2015-04-01 | 40 | | Летняя ночь Публикация | 1990-12-10 | 2015-04-01 | 24 | | Pieterson Grp. издателей | 1950-07-15 | 2015-04-01 | 64 | | Роман Издатель ООО | 2000-01-01 | 2015-04-01 | 15 | + ------------------------------ + ------------ + ----- ------- + ------ + 8 рядов в наборе (0,00 сек)
Примечание. Поскольку текущая дата является одним из аспектов получения выходных данных, ваши выходные данные и выходные данные из сценария PHP будут отличаться от указанных выше.
PHP скрипт
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-date-subtraction - php mysql examples | w3resource</title>
<meta name="description" content="example-date-subtraction - php mysql examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>List of publishers with date of establishment, current date of establishment and how old their publishing houses are:</h2>
<table class='table table-bordered'>
<tr>
<th>Publisher's name</th><th>Date of establishment</th><th>Current date</th><th>AGE</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT pub_name, estd, CURDATE(),(YEAR(CURDATE())-YEAR(estd)) - (RIGHT(CURDATE(),5)<RIGHT(estd,5))
AS Age FROM publisher') as $row) {
echo "<tr>";
echo "<td>" . $row['pub_name'] . "</td>";
echo "<td>" . $row['estd'] . "</td>";
echo "<td>" . $row['CURDATE()'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>
Расчет даты в MySQL с помощью mod ()
Расчет даты с модом ()
Далее мы обсудили, как использовать функцию MySQL MOD () для вычисления даты.
Пример:
Пример таблицы: издатель
Код:
SELECT pub_name,estd
FROM publisher
WHERE MONTH(estd) = MOD(MONTH(CURDATE()),12)+8;
объяснение
Функция MOD () возвращает модули из подразделения.
Вышеприведенный оператор MySQL возвращает pub_name и estd тех издателей, чей месяц создания равен сложению 8 и модулю части месяца текущей даты, деленной на 12.
Пример вывода:
mysql> ВЫБЕРИТЕ pub_name, estd -> ОТ издателя -> ГДЕ МЕСЯЦ (estd) = MOD (МЕСЯЦ (КУРДАТА ()), 12) +8; + -------------------------- + ------------ + | pub_name | есть | + -------------------------- + ------------ + | Публикация Jex Max | 1969-12-25 | | Летняя ночь Публикация | 1990-12-10 | + -------------------------- + ------------ + 2 ряда в наборе (0,00 сек)
Примечание. Поскольку текущая дата является одним из аспектов достижения результата, ваш вывод и вывод из сценария PHP могут отличаться от приведенных выше. Измените текущую дату на подходящую дату (например, до августа 2010 года), чтобы получить выходные данные.
PHP скрипт
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-mod - php mysql example | w3resource</title>
<meta name="description" content="example-mod - php mysql example | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>List of publishers with their date of establishment, where their respective month of establishment equals,
addition of one to the reminder of the current month divided by twelve:</h2>
<table class='table table-bordered'>
<tr>
<th>Publisher's name</th><th>Date of establishment</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT pub_name,estd FROM publisher WHERE MONTH(estd) = MOD(MONTH(CURDATE()),12)+8') as $row) {
echo "<tr>";
echo "<td>" . $row['pub_name'] . "</td>";
echo "<td>" . $row['estd'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>
Примечание. Оператор select может возвращать ноль строк. Это только потому, что данные, доступные в таблице, в которой выполняется запрос, не имеют даты относительно текущей даты. В противном случае запрос является технически правильным.
Предыдущий: строки, содержащие максимум группы для столбца
Далее: Расчет даты по заказу
Новый контент: Composer: менеджер зависимостей для PHP , R программирования