Haben Sie eine Tabelle mit einer Spalte wie dieser:
first_day_month
01/07/2020
01/07/2020
01/08/2020
01/09/2020
.......
Müssen Sie eine Spalte wie Jahr-Monat erstellen, Versuchte to_char(first_day_month, 'MM/YYYY')
, bekam aber einen Fehler:
Error running query: INVALID_FUNCTION_ARGUMENT: Failed to tokenize string [M] at offset [0]
Versucht
concat(extract(year from first_day_month),'-',extract(month from first_day_month) ) as month,
Mit einem Fehler:
Error running query: SYNTAX_ERROR: line 2:1: Unexpected parameters (bigint, varchar(1), bigint) for function concat. Expected: concat(array(E), E) E, concat(E, array(E)) E, concat(array(E)) E, concat(varchar)
Habe auch date_parse ausprobiert, aber nicht richtig verstanden, eine Idee? Vielen Dank
2 Antworten
Sie müssen zuerst TO_DATE
verwenden, um die Spalte in ein korrektes Datum zu konvertieren. Verwenden Sie dann TO_CHAR
, um wie gewünscht zu formatieren:
SELECT TO_CHAR(TO_DATE(first_day_month, 'DD/MM/YYYY'), 'MM/YYYY') AS my
FROM yourTable;
Beachten Sie, dass Sie in diesem Fall, da der gewünschte Textmonatsjahr genau der richtige Teilstring ist, hier auch direkt RIGHT
verwenden können:
SELECT RIGHT(first_day_month, 7)
FROM yourTable;
Beachten Sie schließlich, dass YYYY/MM
im Allgemeinen ein besseres Format ist, da es richtig sortiert wird. Erwägen Sie also möglicherweise die Verwendung dieser Version:
SELECT TO_CHAR(TO_DATE(first_day_month, 'DD/MM/YYYY'), 'YYYY/MM') AS ym
FROM yourTable;
Ihre Daten scheinen nicht vom Typ DATE
zu sein, sind möglicherweise Zeichenfolgen und müssen dann zuerst in den Typ DATE
konvertiert und den Anzeigestil wie gewünscht formatiert werden:
SELECT TO_CHAR(first_day_month::DATE,'MM/YYYY') AS first_day_month
FROM t
Neue Fragen
sql
Structured Query Language (SQL) ist eine Sprache zum Abfragen von Datenbanken. Zu den Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) gehören. Wenn sich Ihre Frage ausschließlich auf ein bestimmtes DBMS bezieht (bestimmte Erweiterungen / Funktionen verwendet), verwenden Sie stattdessen das Tag dieses DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten ISO / IEC-Standard-SQL verwenden.