Биллинговая система Nodeny

Главная категория => Юмор => Тема начата: ser970 от 14 Февраля 2021, 09:23:08



Название: интересная фишка Mysql
Отправлено: ser970 от 14 Февраля 2021, 09:23:08
mysql> SELECT (UNIX_TIMESTAMP('2021-02-01 00:00:00')-UNIX_TIMESTAMP('2021-01-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-02-01 00:00:00')-UNIX_TIMESTAMP('2021-01-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             31.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-03-01 00:00:00')-UNIX_TIMESTAMP('2021-02-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-03-01 00:00:00')-UNIX_TIMESTAMP('2021-02-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             28.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-04-01 00:00:00')-UNIX_TIMESTAMP('2021-03-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-04-01 00:00:00')-UNIX_TIMESTAMP('2021-03-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             30.9583 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> SELECT (UNIX_TIMESTAMP('2021-05-01 00:00:00')-UNIX_TIMESTAMP('2021-04-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-05-01 00:00:00')-UNIX_TIMESTAMP('2021-04-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             30.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-06-01 00:00:00')-UNIX_TIMESTAMP('2021-05-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-06-01 00:00:00')-UNIX_TIMESTAMP('2021-05-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             31.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-07-01 00:00:00')-UNIX_TIMESTAMP('2021-06-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-07-01 00:00:00')-UNIX_TIMESTAMP('2021-06-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             30.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-08-01 00:00:00')-UNIX_TIMESTAMP('2021-07-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-08-01 00:00:00')-UNIX_TIMESTAMP('2021-07-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             31.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-09-01 00:00:00')-UNIX_TIMESTAMP('2021-08-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-09-01 00:00:00')-UNIX_TIMESTAMP('2021-08-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             31.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-10-01 00:00:00')-UNIX_TIMESTAMP('2021-09-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-10-01 00:00:00')-UNIX_TIMESTAMP('2021-09-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             30.0000 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-11-01 00:00:00')-UNIX_TIMESTAMP('2021-10-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-11-01 00:00:00')-UNIX_TIMESTAMP('2021-10-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             31.0417 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT (UNIX_TIMESTAMP('2021-12-01 00:00:00')-UNIX_TIMESTAMP('2021-11-01 00:00:00'))/86400;
+-------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2021-12-01 00:00:00')-UNIX_TIMESTAMP('2021-11-01 00:00:00'))/86400 |
+-------------------------------------------------------------------------------------+
|                                                                             30.0000 |
+-------------------------------------------------------------------------------------+


и обратное

 SELECT from_unixtime(UNIX_TIMESTAMP('2021-03-01 00:00:00')+(3600*24*31));
+-------------------------------------------------------------------+
| from_unixtime(UNIX_TIMESTAMP('2021-03-01 00:00:00')+(3600*24*31)) |
+-------------------------------------------------------------------+
| 2021-04-01 01:00:00                                               | 
+-------------------------------------------------------------------+
1 row in set (0.00 sec)



Название: Re: интересная фишка Mysql
Отправлено: goletsa от 14 Февраля 2021, 11:13:29
Количество дней в месяце? Или что?


Название: Re: интересная фишка Mysql
Отправлено: Cell от 14 Февраля 2021, 12:23:56
Ну да, март и октябрь.... разница на 1 час
Что-то мне вангуется, что это связано с переходом на на летне-зимнее время
 


Название: Re: интересная фишка Mysql
Отправлено: 0xbad0c0d3 от 07 Апреля 2021, 16:47:37
только один вопрос: а нафига? )) я не помню, чтобы количество дней в месяце менялось и его нужно было каждый раз считать )) более того: причем тут  mysql ))
с таким же успехом это и фишка bash+python, например))
Код:
$ echo "print(round(($(date -d'2021-03-01' +%s)-$(date -d'2021-02-01' +%s)) / 86400))"|python3
28



Название: Re: интересная фишка Mysql
Отправлено: ser970 от 07 Апреля 2021, 22:31:20
вообще то меняется.
28 != 29 (февраль)

вычисляется чуть по другому
но это так было написано в одном скрипте - просто переписал...

сори (опять кнопки перепутал)...