2013-07-03 4 views
0

Это вопрос интервью: с учетом базы данных (mysql или ее эквивалента) с каждой записью, содержащей начальное время столбцов и время окончания Мне было предложено взять записи где текущее системное время падает между временем начала и окончания. Но время начала и окончания - это метка времени (ГГГГ-ММ-ДД ЧЧ: ММ: СС). Поэтому я должен искать только те, где временная часть (HH: MM: SS) попадает в диапазон (очевидно, что одна и та же дата никогда не повторяется :)).выборки, которые имеют текущее время, находятся в диапазоне

+0

Думаю, этот вопрос интервью проверяет вашу способность к Google? Такой вопрос приведет только к запросу найти подходящую функцию даты/времени для используемого сервера базы данных, а на самом деле никакой возможности со стороны собеседника. Если бы я мог, я бы поставил вопрос о фактическом интервью. –

ответ

0

Нравится?

SELECT * 
FROM table 
WHERE CURRENT_TIMESTAMP BETWEEN start_time and end_time 
+0

Не то, что было задано. Он заботится только о временной части временной метки. Части даты не имеют отношения к делу и должны быть лишены/нормализованы. –

+0

Мне просто нужна часть времени, но время начала похоже на формат даты и времени в mysql – username

0

Этот вопрос сильно зависит базы данных двигателя. Практически каждая база данных имеет для этого свои функции. Высказывание mysql or equivalent в вопросе о интервью - это примерно то же самое, что спросить, знаете ли вы те конкретные функции mysql ... которые, кстати, из основных баз данных наименее напоминают функции, фактически определенные стандартом, частично из-за истории использования mysql unix время. MySQL похож на VB6 баз данных, и этот вопрос сильно указывает на то, что интервьюер либо сам не осознает этого, либо устает от интервьюирования с разработчиками, которые этого не знают.

Полный эталонный стандарт SQL требует плату скачать, но я нашел вам ссылку для SQL-92 стандартных типов даты и времени данных и операций здесь:

http://www.ibphoenix.com/resources/documents/design/doc_169

0
SELECT * 
    FROM MyTable T 
WHERE TIME_TO_SEC(CURRENT_TIMESTAMP) BETWEEN TIME_TO_SEC(T.start_time) 
     AND TIME_TO_SEC(T.end_time) 
+0

Там вы идете @ Курт. Goofiness-1. –

+0

делает time_to_sec принимает формат datetime и преобразует во время или секунды? – username

Смежные вопросы