Legen Sie nur Monat und Jahr Datum an SQL-Tabelle
Ich bin mit MS SQLServer und versuchen, fügen Sie ein Monat/Jahr-Kombination eine Tabelle wie diese:
INSERT INTO MyTable VALUES (1111, 'item_name', '9/1998')
offenbar der obige Befehl nicht funktionieren, da
Conversion failed when converting date and/or time from character string.
Weil 9/1998
ist ein schlechtes format. Ich möchte, um dies zu beheben und diese Spalte der Tabelle zeigen, so etwas wie:
9/1998
12/1998
(other records with month/year format)
...
Kann mir jemand helfen mit diesem?
danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL Server unterstützt nur vollständige Datumsangaben (Tag, Monat und Jahr) oder datetimes, wie Sie hier sehen können auf der MSDN-Liste Datentyp: http://msdn.microsoft.com/en-us/library/ff848733(v=sql.105).aspx
Können Sie einen date-Wert mit einem falschen Tag oder speichern Sie den Wert als string, aber es gibt keinen einheitlichen Typ, der speichert nur Monat/Jahr-Paare.
9/1998
format in der Tabelle?SELECT * FROM MyTable
den MS SQLServer geben Sie sich eine excel-ähnliche Tabelle mit allen Datensätzen in der es. Möchte nur die Anzeige der Datum-Spalte inM/YYYY
format in der TabelleIch sehe, dies ist eine alte post, aber meine letzten tests, die bestätigen, dass die Speicherung von Datum oder teilen das Jahr und der Monat zu zwei Spalten (Jahr smallint, Monat tinyint) Ergebnisse in der Gesamtwertung der gleichen Größe.
Der Unterschied wird sichtbar, wenn Sie wirklich brauchen, um zu analysieren, das Datum auf den filter, den Sie benötigen (Jahr/Monat).
Lassen Sie mich wissen, was halten Sie von dieser Lösung! 🙂
Freundlichen GRÜßEN
Können Sie einfach "01" für den Tag:
9/1998
, und Ihre Antwort wird geben ein1998-09-01
das ist nicht das, was ich Suche.Können Sie:
1) Ändern Sie in der Spalte Typ auf varchar
2) Nehmen Sie das mitgelieferte Wert und wandelt es in ein geeignetes format, dass sql-server akzeptiert werden sollen, bevor Sie einfügen, und formatieren Sie es zurück zu "M/YYYY" - format, wenn Sie ziehen Sie die Daten:
SELECT MONTH([myDate]) + '/' + YEAR([myDate]) ...
M/YYYY
beim herausziehen der Daten? dankeMöchten Sie vielleicht zu prüfen, welchen nutzen haben Sie für Ihre Daten. Im moment sind Sie nur im Zusammenhang mit der Erfassung und Darstellung der Daten. Allerdings geht nach vorn, müssen Sie Datum Berechnungen, die auf es (ie, vergleichen die Differenz zwischen zwei Datensätzen). Aus diesem Grund und auch, da Sie etwa zwei Drittel der Art und Weise gibt, könnte man auch konvertieren Sie dieses Feld, um ein Datum geben. Die Präsentationsschicht kann danach delegiert werden, die mit der Aufgabe der Anzeige entsprechend als "MM/JJJJ", eine Funktion, die verfügbar ist, um gerade über irgendeine Programmiersprache oder einer reporting-Plattform, die Sie verwenden können.
wenn Sie möchten, verwenden date-Typ, sollten Sie die format-Wert:
wenn Sie möchten, machen-Abfrage wie SELECT * FROM...
Sie sollten verwenden Sie varchar statt date-Typ.