kawabanga
@kawabanga

STR_TO_DATE в MSSQL 2008?

Работаю тут над доработками, и споткнулся с несовместимостью mssql на одном куске кода, запрос такой:
Изначально в базе есть колонки год, и месяц (такой вот хитрый ход от предыдущего разработчика), редактировать эти колонки нельзя, но нужно сделать выборку between. Каким образом ее можно сделать безболезненней?
У меня на уму крутятся два варианта:
1) как то видоизменить STR_TO_DATE под MSSQL 2008
2) добавить поле даты нормальное, и при выборке использовать его.
SELECT `tasks`.* FROM `tasks` RIGHT JOIN `tasks_kpi` ON tasks.id = tasks_kpi.tasks_id WHERE (((`tasks_kpi`.`kpi_id`=1) AND (`tasks`.`type`='1')) AND (tasks.status<>10)) AND (STR_TO_DATE( periodYear+'-'+periodMonth+'-01'),'%Y-%m-%d') BETWEEN '2016-01-01' and '2016-04-01')'
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
В MSSQL есть CAST и CONVERT

CONVERT - построже

хвост запроса мог бы выглядеть так:

AND (cast(( periodYear+'-'+periodMonth+'-01'),'%Y-%m-%d') as datetime2) BETWEEN '2016-01-01' and '2016-04-01')

то бишь CAST( некая фигня AS некий тип) [ CAST('01-04-2017' as datetime2)]

либо CONVERT(datetime2, '31-12-2017', 104) (104 - это формат DD-MM-YYYY)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы