SELECT d.id, name, p.type, pp.price_b, pp.price_c, pp.price_d FROM device d
INNER JOIN (SELECT device_id, MAX(type) as "type" FROM price GROUP BY device_id) p ON p.device_id = d.id
INNER JOIN price pp ON pp.type = p.type AND pp.device_id = d.id
SELECT d.id,
CASE
WHEN p3.type IS NOT NULL THEN p3.type
WHEN p2.type IS NOT NULL THEN p2.type
WHEN p1.type IS NOT NULL THEN p1.type
END AS type,
CASE
WHEN p3.type IS NOT NULL THEN p3.price_b
WHEN p2.type IS NOT NULL THEN p2.price_b
WHEN p1.type IS NOT NULL THEN p1.price_b
END AS price_b,
CASE
WHEN p3.type IS NOT NULL THEN p3.price_c
WHEN p2.type IS NOT NULL THEN p2.price_c
WHEN p1.type IS NOT NULL THEN p1.price_c
END AS price_c,
CASE
WHEN p3.type IS NOT NULL THEN p3.price_d
WHEN p2.type IS NOT NULL THEN p2.price_d
WHEN p1.type IS NOT NULL THEN p1.price_d
END AS price_d
FROM device d
LEFT JOIN (SELECT device_id, type, price_b, price_c, price_d
FROM price WHERE type = 3) p3 ON d.id = p3.device_id
LEFT JOIN (SELECT device_id, type, price_b, price_c, price_d
FROM price WHERE type = 2) p2 ON d.id = p2.device_id
LEFT JOIN (SELECT device_id, type, price_b, price_c, price_d
FROM price WHERE type = 1) p1 ON d.id = p1.device_id
function getTimerEndFromNow(prompt) {
return getTimerEndFrom(new Date(), prompt);
}
function getTimerEndFrom(start, prompt) {
return new Date(start.valueOf() + getSecondsByPrompt(prompt) * 1000);
}
function getSecondsByPrompt(prompt) {
const [count, measure] = prompt.split(' ');
return count * getSecondsByMeasure(measure);
}
function getSecondsByMeasure(measure) {
switch(measure.toLowerCase()) {
case 'день': return 60 * 60 * 24;
case 'час': return 60 * 60;
case 'минута': return 60;
default: throw new Error(`Unknown measure ${measure}`);
}
}
/gpt
Мне нужно перевести значение "1 день"/"1 час"/"1 минута" в секунды для таймера. А точнее функция, но я вообще не знаю как это сделать. И еще одну функцию для того что бы например таймер получил сегодня а пишется во сколько он закончится, точнее например в 19.05.2023 1:42
Напиши функции на js
Для перевода "1 день"/"1 час"/"1 минута" в секунды можно использовать следующую функцию:
function convertToSeconds(time) { const timeArr = time.split(' '); const value = parseInt(timeArr[0]); const unit = timeArr[1]; switch (unit) { case 'день': return value * 24 * 60 * 60; case 'час': return value * 60 * 60; case 'минута': return value * 60; default: return 0; } }
Пример использования:
const secondsInDay = convertToSeconds('1 день'); // 86400 const secondsInHour = convertToSeconds('1 час'); // 3600 const secondsInMinute = convertToSeconds('1 минута'); // 60
Для форматирования даты в строку можно использовать объект `Date` и методы `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()`, `getSeconds()`:
function formatDate(date) { const year = date.getFullYear(); const month = addLeadingZero(date.getMonth() + 1); const day = addLeadingZero(date.getDate()); const hours = addLeadingZero(date.getHours()); const minutes = addLeadingZero(date.getMinutes()); const seconds = addLeadingZero(date.getSeconds()); return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`; } function addLeadingZero(value) { return value < 10 ? '0' + value : value; }
Пример использования:
const endDate = new Date(2023, 4, 19, 1, 42, 0); const formattedDate = formatDate(endDate); // '19.05.2023 01:42:00'
При коннекте к www.site1.ru провайдеры через раз подключаются к правильному айпи, то к основному, то к резервному.
Соответственно где то на сайт заходит, где то нет так как конектится ко 2 айпи который в текущий момент сервер не использует.
private readonly Brick _controllableBrick;
Brick controlledBrick = new(Vector3Int.up * 5, BrickPatterns.LBlock);
var controlledBrick = new Brick(new Vector3Int(0,5,0), BrickPatterns.LBlock);
var brickSpace = new(controlledBrick);
brickSpace.LowerControllableBrick();
Assert.AreEqual(new Vector3Int(0, 4, 0), _brickSpace.ControllableBlockPosition);