2013-09-23 2 views
0

Im сидя с небольшой проблемой ..конферансье даты и времени в SQLServer

В моей базе данных у меня есть таблица, которая содержит 2 DateTimes ..

TABLE1 имеет turn_time как DATETIME значных 0000-00- 00 23:59:59

tABLE2 имеет last_move, как DateTime значных 2013-09-23 14:20:19

И я хочу рассчитать в SQL, если turn_time + last_move < СЕЙЧАС().

но результат им получить обратно выглядит следующим образом: 40261846333938,000000

как я получаю просто выберите назад из текущей строки, если turn_time + last_move < NOW()?

мой SQL:

SELECT * FROM active_games 
     INNER JOIN games 
     ON active_games.fk_games_id = games.games_id 
     INNER JOIN product 
     ON active_games.fk_product = product.product_id 
     INNER JOIN users 
     ON active_games.fk_user_id_turn = users.user_id 
     INNER JOIN user_profile 
     ON users.user_id = user_profile.fk_user_id 
     WHERE turn_time + last_move < NOW() 

спасибо за ваше время.

+0

Включен ли SQL Server? –

+0

Если вы добавите два DateTimes, какого результата вы ожидаете? – Magnus

ответ

1

Вы можете попробовать это WHERE пункт вместо:

WHERE UNIX_TIMESTAMP(turn_time) + UNIX_TIMESTAMP(last_move) < UNIX_TIMESTAMP(NOW()) 

Документация NOW() говорит следующее:

Возвращает текущую дату и время как значение «YYYY-MM-DD HH : MM: SS 'или YYYYMMDDHHMMSS.uuuuuu, в зависимости от того, используется ли функция в строковом или числовом контексте.

Поскольку NOW() используется в числовом контексте, в вашей статье WHERE, что возвращается числовое значение (в формате YYYYMMDDHHMMSS.uuuuuu), и попытки сравнить их с DateTime turn_time + last_move. Преобразование всего в временную метку Unix должно позволять сравнение работать правильно.

Надеюсь, это поможет!

+0

u спас мой день! оно работает ;) –

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