Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Between и not is null / 4 сообщений из 4, страница 1 из 1
10.04.2014, 16:57:33
    #38611542
VilliBoms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Between и not is null
Код: plsql
1.
SELECT if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0)


подскажите как мне потправить данные код, если время не задано выдавало к примеру 2, т.е. нужна еще проверка на не пустое значение:
Пример:
Код: plsql
1.
SELECT if(CURTIME() between '' AND '21:00:00', 1, 0)


должно выдать 2
...
Рейтинг: 0 / 0
10.04.2014, 17:30:31
    #38611590
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Between и not is null
VilliBoms,

CASE ?
...
Рейтинг: 0 / 0
10.04.2014, 18:37:18
    #38611696
VilliBoms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Between и not is null
MasterZiv,
примерчик не покажите?
...
Рейтинг: 0 / 0
14.04.2014, 15:54:31
    #38614377
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Between и not is null
VilliBoms
Код: plsql
1.
SELECT if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0)


подскажите как мне потправить данные код, если время не задано выдавало к примеру 2, т.е. нужна еще проверка на не пустое значение:
Пример:
Код: plsql
1.
SELECT if(CURTIME() between '' AND '21:00:00', 1, 0)


должно выдать 2

это как вы себе представляете, в запросе либо задано время либо нет, если девять часов подставляеться как %парам
можно конечно

Код: sql
1.
if(%param is null OR %param='',2,if(CURTIME() between '09:00:00' AND '21:00:00', 1, 0))


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

вот пример одного такого кода
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
proc_start:BEGIN
DECLARE iSchema, iTable VARCHAR(64);
DECLARE i INT;

IF iString = '*' OR iString = '*.*' OR iString = '*.' OR iString = '.*' OR iString = '.' THEN

	SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
	FROM `information_schema`.`tables` 
	WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_type='BASE TABLE'
	ORDER BY `table_schema`,`table_rows` DESC;

ELSEIF iString = '' THEN	
	SELECT 'use db.table or db.* *.table or *.* (the same *)' as 'INFO';
	
ELSE
	SET i = LOCATE('.',iString);
	
	IF i = 0 THEN	
		SET iSchema = iString;
		SET iTable = '*';
	ELSE
		SET iSchema = SUBSTRING(iString,1,LOCATE('.',iString)-1);
		SET iTable = SUBSTRING(iString,LOCATE('.',iString)+1);
	END IF;
	
	IF iSchema = '' THEN SET iSchema = '*'; END IF;	
	IF iTable = '' THEN SET iTable = '*'; END IF;
	
	IF iSchema = '*' AND iTable = '*' THEN	
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_type='BASE TABLE'
		ORDER BY `table_schema`,`table_rows` DESC;	
	
	ELSEIF iSchema <> '*' AND iTable <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema = iSchema AND table_name = iTable
		ORDER BY `table_schema`,`table_rows` DESC;	
	
	ELSEIF iSchema <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema = iSchema AND table_type='BASE TABLE'
		ORDER BY `table_schema`,`table_rows` DESC;
	
	ELSEIF iTable <> '*' THEN
		SELECT  `table_schema`,`table_name`, `table_rows`, `data_length`, `index_length`,  `auto_increment` 
		FROM `information_schema`.`tables` 
		WHERE table_schema <> 'mysql' AND table_schema <> 'information_schema' AND table_name = iTable
		ORDER BY `table_schema`,`table_rows` DESC;
	
	ELSE	
		SELECT CONCAT(@iString,' is bad argument','use db.table or db.* or *.* (the same *)') as 'ERROR';
	
	END IF;
	
END IF;

END


ситуация похожа на вашу, у вас левая и правая граница даты, у меня имя базы имя таблицы, притом что любое может быть не задано.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Between и not is null / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]