Eu só preciso selecionar o primeiro dia do mês de uma determinada variável datetime.
Eu sei que é muito fácil fazer isso usando esse tipo de código:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Mas isso não é muito elegante e provavelmente também não é muito rápido.
Existe uma maneira melhor de fazer isso? Estou usando o SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
, você terá o último dia do mês.Além de toda a resposta acima, uma maneira baseada em uma função introduzida no
sql 2012
fonte
Começando com o SQL Server 2012:
fonte
A conversão de uma string (ou seja, "5/1/2009") para data e hora é certamente mais legível, mas encontramos um código que retornaria no início do mês ...
fonte
Consulta simples:
fonte
Provavelmente é bastante rápido. Por que não criá-lo como uma função sql.
fonte
Isso também funciona:
fonte
Por favor use isso
Para Server 2012
Antes do Server 2012
fonte
Primeiro e último dia do mês atual:
fonte
fonte
Operand type clash: date is incompatible with int
. Eu acho que é porque você está tentando usar o-
operador em um encontro?fonte
Pode ser uma nova função, mas você também pode usar funções antigas:
Se a data na variável fosse, por exemplo
'2017-10-29'
, retornaria uma data de'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
fonte
Futuros googlers, no MySQL, tente o seguinte:
fonte
sql-server
pergunta,date_sub
einterval
émysql
.Eu usei GETDATE () como uma data para trabalhar, você pode substituí-lo pela data que você precisa.
Veja como isso funciona: Primeiro, formate a data no formato AAAAMMDD ... truncando para manter apenas os 6 caracteres mais à esquerda, para manter apenas a parte AAAAMM e, em seguida, acrescente '01' como o mês - e pronto! você tem o primeiro dia do mês atual.
BTW, o desempenho é ótimo nisso!
fonte
Se você está analisando isso hoje e usando o SQL Server 2012 ou mais recente, tem a função EOMONTH que facilita as coisas:
Você pode alterar GETDATE () com qualquer variável de data que desejar.
fonte
Aqui, podemos usar a consulta abaixo para a primeira data do mês e a última data do mês.
fonte
Se estiver usando o SQL Server 2012 ou superior;
fonte
O -2 o levará ao primeiro dia do mês passado. ou seja, getdate () é 15/10/18. Seus resultados seriam 1/9/18. Mude para -1 e seus resultados serão 1/10/18. 0 seria o início do próximo mês, 01/11/2018 .. etc etc.
ou
fonte
Tente executar a seguinte consulta:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
fonte
selecione CONVERT (data, DATEADD (dd, - (DATEPART (dd, getdate ()) - 1), getdate ()), 120)
Esta função fornece a data parte da data de início do mês
fonte
.................................................. ...................
Se você não quiser o horário, converta-o para DATE ou, se quiser fazer o horário para 0:00:00, converta para DATE e depois volte para DATETIME.
Altere GETDATE () para a data desejada
fonte
Pessoalmente, recomendei que o sql abaixo, porque quando tento usar a função date na cláusula condition, diminui muito a velocidade da minha consulta.
de qualquer forma, sinta-se livre para tentar isso.
fonte
Não para competir com nenhuma das grandes mentes aqui, mas uma sugestão simples um pouco diferente da resposta aceita acima.
fonte
Eu gosto de usar
FORMAT
, você pode até especificar um horáriofonte
No Sql Server 2012,
fonte
Esta consulta deve funcionar muito bem no MySQL:
fonte
Para quem ainda procura uma resposta, isso funciona como um encanto e acaba com todos os dados. O registro de data e hora é opcional, caso seja necessário especificar, mas funciona sem ele também.
fonte
Obter primeira data e última data na data que passamos como parâmetro no SQL
fonte
Aqui está como você faria isso no MySQL:
fonte
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')