Muszę tylko wybrać pierwszy dzień miesiąca danej zmiennej datetime.
Wiem, że korzystanie z tego rodzaju kodu jest dość łatwe:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Ale to nie jest zbyt eleganckie i prawdopodobnie też nie bardzo szybkie.
Czy jest na to lepszy sposób? Używam SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
, poda ci ostatni dzień miesiąca.Oprócz wszystkich powyższych odpowiedzi, sposób oparty na funkcji wprowadzonej w
sql 2012
źródło
Począwszy od SQL Server 2012:
źródło
Rzutowanie ciągu (tj. „5/1/2009”) na datę i godzinę jest z pewnością bardziej czytelne, ale znaleźliśmy kod, który zwróciłby pierwszy miesiąc ...
źródło
Proste zapytanie:
źródło
Prawdopodobnie jest dość szybki. Dlaczego nie utworzyć go jako funkcji SQL.
źródło
To też działa:
źródło
Proszę użyć tego
Dla serwera 2012
Przed Server 2012
źródło
Pierwszy i ostatni dzień bieżącego miesiąca:
źródło
źródło
Operand type clash: date is incompatible with int
. Chyba dlatego, że próbujesz skorzystać z-
operatora na randce?źródło
To może być nowa funkcja, ale możesz także użyć starych funkcji:
Jeśli na przykład data w zmiennej
'2017-10-29'
byłaby zwrócona, to data'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
źródło
Przyszli pracownicy Google na MySQL wypróbuj to:
źródło
sql-server
pytaniedate_sub
iinterval
sąmysql
.Użyłem GETDATE () jako daty do pracy, możesz go zastąpić datą, której potrzebujesz.
Oto jak to działa: Najpierw formatujemy datę w formacie RRRRMMDD ... obcinając, aby zachować tylko 6 znaków z lewej strony, aby zachować tylko część RRRRMM, a następnie dodać „01” jako miesiąc - i voila! masz pierwszy dzień bieżącego miesiąca.
BTW, wydajność jest w tym świetna!
źródło
Jeśli patrzysz na to dzisiaj i używasz programu SQL Server 2012 lub nowszego, masz funkcję EOMONTH, która ułatwia:
Możesz zmienić GETDATE () dowolną zmienną daty, którą chcesz.
źródło
Tutaj możemy użyć poniższego zapytania do pierwszej daty miesiąca i ostatniej daty miesiąca.
źródło
Jeśli używasz SQL Server 2012 lub nowszego;
źródło
-2 zapewni ci pierwszy dzień zeszłego miesiąca. tzn. getdate () to 10/15/18. Twoje wyniki to 9/1/18. Zmień na -1, a Twoje wyniki wyniosą 10/1/18. 0 będzie początkiem następnego miesiąca, 11.01.2018 .. itd. Itd.
lub
źródło
Spróbuj wykonać następujące zapytanie:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
źródło
wybierz CONVERT (data, DATEADD (dd, - (DATEPART (dd, getdate ()) - 1), getdate ()), 120)
Ta funkcja zapewni część datową daty początkowej miesiąca
źródło
.................................................. ...................
Jeśli nie chcesz czasu, przekonwertuj go na DATE lub jeśli chcesz ustawić czas na 0:00:00, Konwertuj na DATE, a następnie z powrotem na DATETIME.
Zmień GETDATE () na żądaną datę
źródło
Osobiście poleciłem sql poniżej, ponieważ kiedy próbuję użyć funkcji daty w klauzuli warunku, bardzo spowalnia moją szybkość zapytania.
w każdym razie możesz spróbować tego.
źródło
Nie konkurować z żadnym z wielkich umysłów tutaj, ale prosta sugestia nieco inna niż powyższa zaakceptowana odpowiedź.
źródło
Lubię używać
FORMAT
, możesz nawet określić czasźródło
W Sql Server 2012
źródło
To zapytanie powinno działać bardzo dobrze na MySQL:
źródło
Dla każdego, kto wciąż szuka odpowiedzi, działa to jak urok i eliminuje wszelkie daty. Znacznik czasu jest opcjonalny, na wypadek gdyby wymagał określenia, ale działa również bez niego.
źródło
Uzyskaj pierwszą datę i ostatnią datę w dniu, który przekazujemy jako parametr w SQL
źródło
Oto, jak zrobiłbyś to w MySQL:
źródło
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')