Ich muss nur auf Month.Year über das Datumsfeld in SQL Server zugreifen.
Neben den bereits gegebenen Vorschlägen gibt es noch eine weitere Möglichkeit, die ich Ihrer Frage entnehmen kann:
- Sie möchten immer noch, dass das Ergebnis ein Datum ist
- Aber Sie möchten die Tage, Stunden usw. "verwerfen"
- Datumsfeld nur für Jahr/Monat
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Dadurch wird die Anzahl der ganzen Monate von einem Basisdatum (0) abgerufen und dann zu diesem Basisdatum hinzugefügt. Runden Sie also auf den Monat ab, in dem sich das Datum befindet.
ANMERKUNG: In SQL Server 2008 wird die ZEIT immer noch als 00: 00: 00.000 .__ angehängt. Dies ist nicht genau das Gleiche wie das "Entfernen" aller Notationen von Tag und Uhrzeit insgesamt. __ zuerst. z.B. 2009-10-01 00: 00: 00.000
select month(dateField), year(dateField)
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
SELECT convert(varchar(7), getdate(), 126)
Vielleicht möchten Sie diese Website besuchen: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
die Ausgabe sieht wie folgt aus: 'Dezember 2013'
Dafür gibt es zwei SQL-Funktionen:
Einzelheiten finden Sie in der verlinkten Dokumentation.
schreiben wir es so: YEAR(anySqlDate)
und MONTH(anySqlDate)
. Versuchen Sie es beispielsweise mit YEAR(GETDATE())
.
Dies kann auch hilfreich sein.
SELECT YEAR(0), MONTH(0), DAY(0);
oder
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
oder
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month
example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1
Ich interpretiere Ihre Frage auf zwei Arten.
a) Sie brauchen nur Monat und Jahr getrennt. In diesem Fall finden Sie die Antwort
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
b)
Sie möchten von einem bestimmten Datum aus etwa '2009-11-24 09:01:55.483'
im Format MONTH.YEAR anzeigen. Die Ausgabe sollte in diesem Fall also 11.2009
sein.
Wenn dies der Fall sein soll, versuchen Sie es (unter anderen Alternativen).
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
CONCAT (Datumsteil (JJ, DATUM), FORMAT (DATUM, 'MM'))
gibt Ihnen zB 201601, wenn Sie ein sechsstelliges Ergebnis wünschen
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
Einige Datenbanken wie MS Access
oder RODBC
unterstützen möglicherweise nicht die SQL SERVER
-Funktionen, aber für jede Datenbank, die die FORMAT
-Funktion hat, können Sie dies einfach tun:
SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
Versuche dies
select to_char(DATEFIELD,'MON') from YOUR_TABLE
z.B.
select to_char(sysdate, 'MON') from dual
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
Ausgabe: März 2019
Für das Ergebnis: "JJJJ-MM"
SELECT Besetzung (YEAR () als Varchar) + '-' + Besetzung (Month () als Varchar)
select convert (varchar (11), transfer_date, 106)
habe mir mein gewünschtes Datumsdatum als 07. März 2018 formatiert
Meine Spalte 'transfer_date' ist eine Datetime-Spalte, und ich verwende SQL Server 2017 in Azure
Monat und Jahr ab Datum abrufen
DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)
SET @lcYear=(SELECT DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT DATEPART(MONTH,@Date))
Abfrage: - Wählen Sie als FieldName den Dateinamen (m, GETDATE ()) + '-' + cast (Datumsteil (yyyy, GETDATE ()) als varchar aus
Ausgabe: - Januar-2019
allgemeines Datumsfeld können wir datename (m,) + '' + cast (Datumsteil (yyyy,) als varchar) als Feldnamen verwenden
Versuche dies:
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
Ergebnis:
maio 2019
Wenn Sie in einer anderen Sprache möchten, ändern Sie ' pt-pt ' in eines dieser Elemente in link
Ich hatte eine spezielle Anforderung, etwas Ähnliches zu tun, bei dem es Monat-Jahr anzeigt, was folgendermaßen geschehen kann:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
In meinem speziellen Fall musste ich es auf die 3-Buchstaben-Monatsabkürzung mit einem zweistelligen Jahr beschränken und ungefähr so aussehen: SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Meine Datenbank unterstützt die meisten der oben genannten Funktionen nicht, aber ich habe festgestellt, dass dies funktioniert:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
zum Beispiel: SELECT SUBSTR(created, 1,7) FROM table;
gibt das Jahr und den Monat im Format "JJJJ-MM" zurück