Я пытаюсь выбрать записи, которые были добавлены в базу данных между началом текущего месяца и текущим днем - я более или менее знаю, как получить записи за текущий день и в течение определенного периода времени - нокак мне его получить, чтобы он начинался с начала текущего календарного месяца?
DECLARE @sm DATETIME; SET @sm = DATEADD(DAY, 1-DAY(GETDATE()), DATEDIFF(DAY, 0, GETDATE())); SELECT columns FROM dbo.foo WHERE datetime_column >= @sm;
select * from YourTable where DateCol >= dateadd(month, datediff(month, 0, getdate()), 0)
WHERE YEAR([Date])=YEAR(GETDATE()) AND MONTH([Date])=MONTH(GETDATE()) AND DAY([Date])<=DAY(GETDATE())
WHERE DateToCheck > LAST_DAY(CURDATE()-INTERVAL 1 MONTH))
http://www.sqlfiddle.com/#!2/3d673/2/0
По сути, вы делаете «Получение месяца», добавление «/ 01» и добавление года.Приведение его в виде строки для обработки добавления, затем приведение в качестве DateTime.
Так что это немного сложнее, чем любая математика дат, но, я думаю, читаемая.