Как я могу выбрать первый день месяца в SQL?

Наконец-то это решило мою проблему. Как сгенерировать ключ хэш-функции 11 для Sms Retriever с подписью в Google App

Решение, упомянутое @farhan в его вопросе, помогло

282
задан Luke Girvin 24 January 2019 в 01:23
поделиться

5 ответов

SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth
555
ответ дан 23 November 2019 в 01:54
поделиться

Для любого все еще поиск ответа это работает как очарование и покончило с любым dateadds. Метка времени является дополнительной, в случае, если она нуждается в определении, но работает без также.

SELECT left(convert(varchar, getdate(),23),7)+'-01 00:00:00'
0
ответ дан 23 November 2019 в 01:54
поделиться

Это могло бы быть новой функцией, но можно также использовать старые функции:

select DATEFROMPARTS(year(@mydate),month(@mydate),'01')

, Если бы дата в переменной была, например '2017-10-29', она возвратила бы дату '2017-10-01'

https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql? view=sql-server-ver15

0
ответ дан 23 November 2019 в 01:54
поделиться

Преобразование строки (например, "1/5/2009") в datetime, безусловно, более разборчиво, но некоторое время назад мы обнаружили код, который возвращал бы первое число месяца ...

DECLARE @Date DATETIME
//...
SELECT DATEADD(mm, DATEDIFF(mm,0,@Date), 0)
13
ответ дан 23 November 2019 в 01:54
поделиться

Вероятно, довольно быстро. Почему бы не создать его как функцию sql.

CREATE FUNCTION [dbo].[GetFirstDayOfMonth] ( @InputDate    DATETIME )
RETURNS DATETIME
BEGIN

    RETURN CAST(CAST(YEAR(@InputDate) AS VARCHAR(4)) + '/' + 
                CAST(MONTH(@InputDate) AS VARCHAR(2)) + '/01' AS DATETIME)

END
GO
5
ответ дан 23 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: