Ich arbeite an einer Abfrage in Sql Server 2005, wo ich einen Wert in DateTime
Variable in eine varchar
Variable in yyyy-mm-dd
Format konvertieren muss (ohne Zeit Teil). Wie mache ich das?So konvertieren Sie DateTime nach VarChar
Antwort
mit Microsoft SQL Server unterstützt:
--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'
--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
Versuchen Sie Folgendes:
CONVERT(varchar(10), [MyDateTimecolumn], 20)
Für eine vollständige Datum Zeit und nicht nur Datum tun:
CONVERT(varchar(23), [MyDateTimecolumn], 121)
Siehe diese Seite für convert Stile:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
OR
SQL Server CONVERT() Function
CONVERT
, siehe MSDN documentation.
Entweder Cast
oder Convert
:
Syntax für CAST
:
CAST (expression AS data_type [ (length) ])
Syntax für CONVERT
:
CONVERT (data_type [ (length) ] , expression [ , style ])
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Eigentlich da Sie gefragt ein spezielles Format:
REPLACE(CONVERT(varchar(10), Date, 102), '.', '-')
Sie nicht die Datenbank sagten, aber mit mysql hier ist eine einfache Möglichkeit, ein Datum aus einem Zeitstempel zu erhalten (und die varchar Typumwandlung sollte automatisch geschehen):
mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16 |
+-------------+
1 row in set (0.00 sec)
überprüfen wieder: er SQL-Server über einen Tag angegeben. –
Versuchen Sie folgendes:
CONVERT(VARCHAR(10),GetDate(),102)
Dann müssen Sie die ersetzen „“ mit "-".
Hier ist eine Website, die http://www.mssqltips.com/tip.asp?tip=1145
Sie nicht sagen, welche Sprache, aber ich C#/.NET
gehe davon aus, weil es einen native DateTime
Datentyp hat. In diesem Fall ist es nur wandelt die ToString
Methode und einen Formatbezeichner wie verwenden: Jedoch
DateTime d = DateTime.Today;
string result = d.ToString("yyyy-MM-dd");
, würde ich gegen die Verwendung dieses in einer Datenbankabfrage Verwarnung oder in eine SQL-Anweisung verkettet. Datenbanken benötigen eine bestimmte Formatierungszeichenfolge, die verwendet werden soll. Sie sind besser dran, den Zeitteil auf Null zu setzen und DateTime als SQL-Parameter zu verwenden, wenn Sie das erreichen wollen.
In der Frage, es heißt "Ich arbeite an einer Abfrage in Sql Server 2005". – InkHeart
@InkHeart und alle Down-Wähler - Diese Antwort wurde im Jahr 2008 veröffentlicht. Wenn Sie den Verlauf der Änderungen für die ursprüngliche Frage überprüfen, wurden keine Tags und/oder andere Technologie-bezogene Informationen enthalten. – GSazheniuk
Beachten Sie, dass YYYY-MM-DD mehrdeutig ist, abhängig von Ihren Spracheinstellungen.beste ISO-Norm YYYYMMDD Verwendung finden this blog post
declare @dt datetime
set @dt = getdate()
select convert(char(10),@dt,120)
ich feste Datenlänge von char(10)
haben, wie Sie eine bestimmte Zeichenfolge Format möchten.
- Das gibt Ihnen die Zeit als 0 im Format yyyy-mm-dd 00: 00: 00.000 '
SELECT CAST(CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ;
Das OP erwähnte datetime Format. Für mich steht der Zeitteil im Weg.
Ich denke, es ist ein wenig sauberer, den Zeitabschnitt vor dem Formatieren zu entfernen (durch das Datieren von Datum bis Datum).
convert(varchar(10), convert(date, @yourDate) , 111)
Mit Microsoft SQL Server:
Verwendung Syntax für CONVERT:
CONVERT (data_type [ (length) ] , expression [ , style ])
Beispiel:
SELECT CONVERT(varchar,d.dateValue,1-9)
Für den Stil, den Sie hier weitere Informationen finden: MSDN - Cast and Convert (Transact-SQL).
Sie können DATEPART(DATEPART, VARIABLE)
verwenden. Zum Beispiel:
DECLARE @DAY INT
DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @DATE DATETIME
@DATE = GETDATE()
SELECT @DAY = DATEPART(DAY,@DATE)
SELECT @MONTH = DATEPART(MONTH,@DATE)
SELECT @YEAR = DATEPART(YEAR,@DATE)
Dies ist, wie ich es tun: CONVERT(NVARCHAR(10), DATE1, 103))
SQL Server 2012 verfügt über eine neue Funktion, FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
und Sie können benutzerdefinierte Datum Zeit Format-Strings verwenden: http://msdn.microsoft.com/en-us/library/ee634398.aspx
Diese Seiten implizieren, dass es auch auf SQL2008R2 verfügbar ist, aber ich habe kein handliches zu testen, wenn das der Fall ist.
Beispiel der Verwendung (Australian Datetime):
FORMAT(VALUE,'dd/MM/yyyy h:mm:ss tt')
Hier einige Test SQL für alle Stile. Machen Sie nvarchar(max)
kürzer zum Zuschneiden (z. B. nvarchar(10)
).
DECLARE @now datetime
SET @now = GETDATE()
select convert(nvarchar(MAX), @now, 0) as output, 0 as style
union select convert(nvarchar(MAX), @now, 1), 1
union select convert(nvarchar(MAX), @now, 2), 2
union select convert(nvarchar(MAX), @now, 3), 3
union select convert(nvarchar(MAX), @now, 4), 4
union select convert(nvarchar(MAX), @now, 5), 5
union select convert(nvarchar(MAX), @now, 6), 6
union select convert(nvarchar(MAX), @now, 7), 7
union select convert(nvarchar(MAX), @now, 8), 8
union select convert(nvarchar(MAX), @now, 9), 9
union select convert(nvarchar(MAX), @now, 10), 10
union select convert(nvarchar(MAX), @now, 11), 11
union select convert(nvarchar(MAX), @now, 12), 12
union select convert(nvarchar(MAX), @now, 13), 13
union select convert(nvarchar(MAX), @now, 14), 14
--15 to 19 not valid
union select convert(nvarchar(MAX), @now, 20), 20
union select convert(nvarchar(MAX), @now, 21), 21
union select convert(nvarchar(MAX), @now, 22), 22
union select convert(nvarchar(MAX), @now, 23), 23
union select convert(nvarchar(MAX), @now, 24), 24
union select convert(nvarchar(MAX), @now, 25), 25
--26 to 99 not valid
union select convert(nvarchar(MAX), @now, 100), 100
union select convert(nvarchar(MAX), @now, 101), 101
union select convert(nvarchar(MAX), @now, 102), 102
union select convert(nvarchar(MAX), @now, 103), 103
union select convert(nvarchar(MAX), @now, 104), 104
union select convert(nvarchar(MAX), @now, 105), 105
union select convert(nvarchar(MAX), @now, 106), 106
union select convert(nvarchar(MAX), @now, 107), 107
union select convert(nvarchar(MAX), @now, 108), 108
union select convert(nvarchar(MAX), @now, 109), 109
union select convert(nvarchar(MAX), @now, 110), 110
union select convert(nvarchar(MAX), @now, 111), 111
union select convert(nvarchar(MAX), @now, 112), 112
union select convert(nvarchar(MAX), @now, 113), 113
union select convert(nvarchar(MAX), @now, 114), 114
union select convert(nvarchar(MAX), @now, 120), 120
union select convert(nvarchar(MAX), @now, 121), 121
--122 to 125 not valid
union select convert(nvarchar(MAX), @now, 126), 126
union select convert(nvarchar(MAX), @now, 127), 127
--128, 129 not valid
union select convert(nvarchar(MAX), @now, 130), 130
union select convert(nvarchar(MAX), @now, 131), 131
--132 not valid
order BY style
Hier ist das Ergebnis
output style
Apr 28 2014 9:31AM 0
04/28/14 1
14.04.28 2
28/04/14 3
28.04.14 4
28-04-14 5
28 Apr 14 6
Apr 28, 14 7
09:31:28 8
Apr 28 2014 9:31:28:580AM 9
04-28-14 10
14/04/28 11
140428 12
28 Apr 2014 09:31:28:580 13
09:31:28:580 14
2014-04-28 09:31:28 20
2014-04-28 09:31:28.580 21
04/28/14 9:31:28 AM 22
2014-04-28 23
09:31:28 24
2014-04-28 09:31:28.580 25
Apr 28 2014 9:31AM 100
04/28/2014 101
2014.04.28 102
28/04/2014 103
28.04.2014 104
28-04-2014 105
28 Apr 2014 106
Apr 28, 2014 107
09:31:28 108
Apr 28 2014 9:31:28:580AM 109
04-28-2014 110
2014/04/28 111
20140428 112
28 Apr 2014 09:31:28:580 113
09:31:28:580 114
2014-04-28 09:31:28 120
2014-04-28 09:31:28.580 121
2014-04-28T09:31:28.580 126
2014-04-28T09:31:28.580 127
28 جمادى الثانية 1435 9:31:28:580AM 130
28/06/1435 9:31:28:580AM 131
Hier wollen wir mal 'dd-mm' oder' jun-28'. Es gibt irgendeine Option ?? – JiLaBaJi
Funktioniert für SQL Server 2005, also ist das großartig für diejenigen von uns, die sich noch immer mit älteren Systemen einmischen. Bald auf Upgrade für 2014 vorbereitet! – dyslexicanaboko
Ich möchte formatieren in der Nähe von 101 - 101 = 28.04.2014, Ich möchte ohne Null im Monat, Ausgabe 28.04.2014, ist es anwendbar? –
Der kürzeste und einfachste Weg ist:
DECLARE @now AS DATETIME = GETDATE()
SELECT CONVERT(VARCHAR, @now, 23)
Sie Ihr Datum in vielen Formaten konvertieren kann, ist der syntaxe einfach zu bedienen :
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' *)
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
- Der Code eine ganze Zahl ist, hier 3 die dritte Formating ohne Jahrhundert ist, wenn man das Jahrhundert will einfach nur den Code ändern zu 103.
In Ihrem Fall, habe ich nur umgewandelt und beschränken Größe von nvarchar (10) wie folgt aus:
CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15
mehr unter: http://www.w3schools.com/sql/func_convert.asp
Ein andere Lösung (wenn Ihr Datum ist ein Datetime) ist ein einfaches CAST:
CAST(MY_DATE_TIME as DATE) => 2016-09-15
Versuchen Sie, diese SQL:
select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),'/','_') + '_'+
REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),':','_')
- 1. Varchar nach Datum konvertieren
- 2. mySQL konvertieren varchar nach Datum
- 3. Konvertieren von DateTime nach Double
- 4. t-sql: varchar nach xml konvertieren
- 5. TSQL: Konvertieren varchar 'TT/MM/JJ' in DATETIME
- 6. Konvertieren von DateTime nach DateTime, das mit SQL Server funktioniert?
- 7. So bestellen Sie nach aktualisierten Datum und Uhrzeit varchar Desc
- 8. Wie konvertieren Sie SYS_GUID() zu Varchar?
- 9. Konvertierungsfehler beim Konvertieren varchar
- 10. Varchar in Ascii konvertieren
- 11. Konvertieren Zeichenfolge Wert nach Datum/Datetime in mySQL
- 12. Konvertieren von DateTime nach UK-Format
- 13. Datenkonvertierung von Varchar nach Dezimal
- 14. konvertieren 'Null' Varchar in Dezimal
- 15. Wie konvertiert man Varchar in Datetime?
- 16. Pandas Datetime-Objekte konvertieren
- 17. Postgres: Varchar in Text konvertieren
- 18. mssql konvertieren varchar in float
- 19. PHP konvertieren Datetime Sekunden
- 20. Zeichenfolge in Datetime konvertieren
- 21. konvertieren Datetime-Wert in String in Mysql
- 22. SQL konvertieren Datetime und subtrahieren Stunden
- 23. Excel-DateTime-Seriennummer in R DateTime konvertieren
- 24. Konvertieren von Varchar zu Float oder umgekehrt
- 25. Konvertieren von Varchar TT/MM/JJJJ nach TT/MM/JJJJ Datum/Uhrzeit
- 26. Silverlight Datepicker konvertieren Datetime
- 27. Konvertieren in DateTime
- 28. C# Funktion Datetime konvertieren
- 29. Konvertieren varchar Spaltenwerte in Integer in MySql
- 30. Konvertieren von UTC Datetime zu lokalem Datetime
Für diejenigen von Ihnen, die interessiert sein könnten, würde dies besser funktionieren, wenn Sie VARCHAR zu CHAR ändern. Siehe diesen Beitrag (http://stackoverflow.com/questions/59667/why-would-ie-ever-pick-char-over-varchar-in-sql) für weitere Details. Im Wesentlichen sind 2 Byte Overhead in VARCHAR vs CHAR involviert. In diesem Szenario wissen wir, dass Ihre Zeichenfolge immer aus 10 Zeichen besteht. Daher ist CHAR angemessen. –
Randnotiz, von dem, was ich gesehen habe, schade, keines der Formate ehrt, was auch immer das DATEFORMAT eingestellt ist, vielleicht gibt es einen anderen Weg. –
Gibt es einen Grund, 'LEFT (.., 10)' anstelle von 'CONVERT (CHAR (10), ...)' zu verwenden? Auch diejenigen, die mit den neueren Versionen von SQL Server als 2005 (!) Arbeiten, sollten [die Antwort von Zar Shardan] (http://stackoverflow.com/a/17713768/1026) ausprobieren, die eine Lösung auf der Basis von 'FORMAT (date_value, format_string) 'Funktion. – Nickolay