Блог Никиты Синицы

Блог Никиты Синицы


Следует ли играть в автоматическом режиме в орка 88?

2019-12-19 17:40:31

MySQL: cравнение даты (datetime) через оператор BETWEEN

2017-01-01 15:33:19

Оператор BETWEEN идеально подходит для сравнения диапазона между датами (datetime). Но тут есть подводные камни. Например, есть задача — выбрать данные из таблицы за некоторый промежуток времени (с ‘2008-08-14’ по ‘2008-08-23’).

Рекомендации:
1. Выполняя любые сравнения, приводить все данные к одному типу.
2. Если один операнд имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. А это значит, что если была строка в виде ‘2008-08-14’, то она автоматически преобразуется в TIMESTAMP ‘2008-08-14 00:00:00’ и это влияет на результат запроса.
3. Над данными, которые участвуют в условиях сравнения желательно не делать никаких операций — это позволяет для них использовать индексы, иначе они игнорируются.


Примеры запросов с BETWEEN и без него:

# Поле created_at - тип DATETIME
# КОРРЕКТНЫЕ ЗАПРОСЫ

# 1: Индексы для created_at поля не используются. 
# Условие BETWEEN '2008-08-14' AND '2008-08-23' 
# преобразуется в BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 00:00:00'.
SELECT * FROM news
  WHERE DATE(created_at) BETWEEN '2008-08-14' AND '2008-08-23';

# 2: Оператор BETWEEN не используем, но тоже не самый лучший вариант, индексы не используются
SELECT * FROM news
  WHERE DATE(created_at) >= '2008-08-14' AND DATE(created_at) <= '2008-08-23';

# 3: Строки '2008-08-14 00:00:00' и '2008-08-23 23:59:59' не приведены к типу данных DATE
SELECT * FROM news
  WHERE created_at BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 23:59:59';

# 4: Самый лучший вариант, привели к типу DATETIME, индексы будут использоваться
SELECT * FROM news
  WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s') 
  AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');


#############################
# НЕПРАВИЛЬНЫЕ ЗАПРОСЫ

# 5: Строки '2008-08-14' и '2008-08-23' преобразуются в TIMESTAMP и дополняются '00:00:00'
SELECT * FROM news 
  WHERE created_at >= '2008-08-14' AND created_at <= '2008-08-23';

# 6: Аналогично запросу 5
SELECT * FROM news 
  WHERE created_at BETWEEN STR_TO_DATE('2008-08-14', '%Y-%m-%d') AND STR_TO_DATE('2008-08-23', '%Y-%m-%d');

Получаем самый лучший запрос:

SELECT * FROM news
  WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s') 
  AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');

Ссылки по теме:
MySQL 5.1 Reference Manual :: 11.2.3 Comparison Functions and Operators :: Operator BETWEEN
MySQL 5.1 Reference Manual :: 11 Functions and Operators :: 11.6 Date and Time Functions
Search by Date or Timestamp in MySQL

Источник: tigor.com.ua

PHP: отнять от даты один год

2017-01-01 14:22:25

echo $fromdate= date("Y-m-d",mktime(0, 0, 0, date("m") , date("d"), date("Y")-1));

PHP: взять из строки только латиницу

2016-12-17 14:11:24

Взять из строки только латиницу:

$title= preg_replace("/[^,\p{Latin}]/ui", '', $title);

Взять из строки только латиницу и цифры:

$title= preg_replace("/[^,\p{Latin}\d]/ui", '', $title);

Взять из строки только латиницу, цифры и пробелы:

$title= preg_replace("/[^,\p{Latin}\d\s]/ui", '', $title);

Взять из строки только латиницу, цифры, пробелы и двоеточие:

$title= preg_replace("/[^,\p{Latin}\d\s\:]/ui", '', $title);

Взять из строки только кириллицу:

$title= preg_replace("/[^,\p{Cyrillic}]/ui", '', $title);

Таблица нулевых вилок

2016-12-08 13:21:28

Смотрите также: Как зарабатывать на букмкерских вилках

Таблица содержит пары коэффициентов, которые дают между собой нулевую вилку. Полностью она выглядит так:

 

Но запомнить полностью такую таблицу не просто. И делать это совсем не обязательно. Ниже приведена упрощенная табличка. Для эффективной работы достаточно знать только пары коэффициентов из неё. Всё остальное, при необходимости, запомнится в процессе.

 

Польза от таблицы в том, что она сильно уменьшает время принятия решения о ставке. Допустим, вы видите вилку в сканере и открыв конторы, обнаруживаете что коэффициенты немного сдвинулись.

 

Без знания таблички, вам надо было бы поменять цифры в калькуляторе, чтобы выяснить выгодно ли ставить. Это отнимает время. В работе вилочника время стоит очень дорого. Если же вы знаете таблицу нулевых вилок, то для принятия решения вам часто будет хватать одного взгляда на имеющиеся коэффициенты.

 

Например:

Сканер выдал вилку величиной 1,80% с коэффициентами: СБОбет 1,82--- Пиннакл 2,31 . Пока открывали Бетфред, кэф упал до 2.28. И мы теперь имеем: СБОбет 1,82--- Пиннакл 2,28 Что теперь делать? Есть ли вилка?

 

Если вы не знаете таблицу, вам надо будет открывать калькулятор и менять в нем цифры. Но если вы знаете, что 1,8 - 2,25 составляют нулевую вилку, то у вас не останется сомнений что нужно проставлять и как можно быстрее.

Большую пользу приносит знание пар коэффициентов нулевых вилок при работе с несканируемыми букмекерами. Это позволяет за очень короткое время определить выгодность коэффициентов сразу в нескольких таких конторах.

 

Страницы: 1   2  3   4   5   6   7   8   9   10   11   12   ...  20