Мне просто нужно выбрать первый день месяца для данной переменной datetime.
Я знаю, что это довольно легко сделать с помощью такого кода:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Но это не очень элегантно и, вероятно, не очень быстро.
Есть лучший способ сделать это? Я использую SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
, даст вам последний день месяца.В дополнение ко всему ответу выше, способ, основанный на функции, введенной в
sql 2012
источник
Начиная с SQL Server 2012:
источник
Приведение строки (то есть «01.05.2009») к datetime, безусловно, более разборчиво, но некоторое время назад мы нашли код, который вернул бы первое число месяца ...
источник
Простой запрос:
источник
Это, вероятно, довольно быстро. Почему бы не создать его как функцию sql.
источник
Это тоже работает:
источник
Пожалуйста, используйте это
Для сервера 2012
До Server 2012
источник
Первый и последний день текущего месяца:
источник
источник
Operand type clash: date is incompatible with int
. Я думаю, это потому, что вы пытаетесь использовать-
оператора на свидание?источник
Это может быть новая функция, но вы также можете использовать старые функции:
Если дата в переменной была, например,
'2017-10-29'
она вернула бы дату'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
источник
Будущие Google, на MySQL, попробуйте это:
источник
sql-server
вопросdate_sub
иinterval
естьmysql
.Я использовал GETDATE () в качестве даты для работы, вы можете заменить ее на нужную вам дату.
Вот как это работает: сначала мы форматируем дату в формате ГГГГММДД ... усечая ее, сохраняя только 6 крайних левых символов, чтобы сохранить только часть ГГГГММ, а затем добавляем '01' в качестве месяца - и вуаля! у вас первый день текущего месяца.
Кстати, производительность отличная на этом!
источник
Если вы смотрите на это сегодня и используете SQL Server 2012 или новее, у вас есть функция EOMONTH, которая делает вещи проще:
Вы можете изменить GETDATE () с любой переменной даты, которую вы хотите.
источник
Здесь мы можем использовать приведенный ниже запрос к первой дате месяца и последней дате месяца.
источник
Если используется SQL Server 2012 или выше;
источник
-2 даст вам первый день прошлого месяца. то есть, getdate () - 15.10.18. Ваши результаты будут 01.09.18. Измените на -1, и ваши результаты будут 10/1/18. 0 будет началом следующего месяца, 1.11.08 .. и т. Д.
или
источник
Попробуйте выполнить следующий запрос:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
источник
выберите CONVERT (дата, DATEADD (dd, - (DATEPART (dd, getdate ()) - 1), getdate ()), 120)
Эта функция предоставит вам часть даты начала месяца
источник
.................................................. ...................
Если вам не нужно время, то конвертируйте его в DATE или, если хотите, сделайте время до 0:00:00, конвертируйте в DATE, а затем обратно в DATETIME.
Измените GETDATE () на желаемую дату
источник
Я лично рекомендовал sql ниже, потому что, когда я пытаюсь использовать функцию даты в условии условия, это сильно замедляет мою скорость запроса.
в любом случае, не стесняйтесь попробовать это.
источник
Не для того, чтобы конкурировать с кем-либо из великих умов здесь, но простое предложение, немного отличающееся от принятого ответа выше.
источник
Я люблю использовать
FORMAT
, вы даже можете указать времяисточник
В SQL Server 2012
источник
Этот запрос должен очень хорошо работать на MySQL:
источник
Для тех, кто все еще ищет ответ, это работает как шарм и устраняет любые даты. Временная метка является необязательной, если она требует указания, но работает и без нее.
источник
Получить первую дату и последнюю дату в дате, которую мы передаем в качестве параметра в SQL
источник
Вот как бы вы сделали это в MySQL:
источник
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')