Я пытаюсь использовать фактическое числовое значение месяца в запросе SQL для получения результатов. Есть ли способ сделать это, не имея функции, чтобы изменить номера на реальные названия месяцев, а затем вернуться к номерам месяцев? Следующий код работает для имен, что работает для чисел?
datename (месяц, (конвертировать (DateTime, DTSTAMP))) = 'Октябрь'
month, (convert (datetime, DTSTAMP)) должен это делать, но с какой стати вы не правильно храните данные в качестве даты и времени для начала? Все эти дополнительные средства преобразования для использования дат добавляют ненужную нагрузку на ваш сервер и замедляют работу приложения.
здесь вы можете искать с опциями сравнения, такими как:
DATE_SUB (CURDATE (), ИНТЕРВАЛ 0 ДЕНЬ)
DATE_SUB (CURDATE (), ИНТЕРВАЛ 1 МЕСЯЦ)
DATE_SUB (CURDATE (), ИНТЕРВАЛ 1 ГОД)
согласно вашему требованию.
Получает номер месяца с датой
CONVERT (VARCHAR (2), DTSTAMP, 110)
Datepart является альтернативой команде месяца, и она более гибкая, так как вы можете извлечь другие части даты.
DATEPART(mm, convert(datetime,DTSTAMP))