2016-09-04 6 views
1

Ich benutze SQL Server Compact 4.0-Version, und obwohl es scheint, eine einfache Sache in Google zu finden, die Beispiele, die ich ausprobiert habe keine funktionieren.Datum aus Datetime-Spalte extrahieren - SQL Server Compact

Meine Spalte signup_date ist eine DateTime mit einem Wert 04-09-2016 09:05:00.

Was ich versucht habe, bisher ohne Erfolg:

SELECT FORMAT(signup_date, 'Y-m-d') AS signup_date; 
SELECT CONVERT(signup_date, GETDATE()) AS signup_date 
SELECT CAST(data_registo, date) AS signup_date 

Ich fand, dass ich DATEPART Funktion nutzen könnte, aber das würde mich zwingen, um die Werte zu verketten, ist dies der richtige Weg zu folgen? Wenn ja, wie betrachte ich als Y-m-d?

SELECT DATEPART(month, signup_date) 
+0

Haben Sie 'convert (date, signup_date)' versucht? –

+0

Ja, es ruft den Fehler ab: 'Der angegebene Datentyp ist nicht gültig.[Datentyp (falls bekannt) = Datum] ' – Linesofcode

+0

Meinst du, du möchtest den Zeitabschnitt entfernen und nur ein DATUM lassen? –

Antwort

0

SQL Server Compact hat keinen Datumstyp.

Wenn Sie nicht die Zeit sehen wollen, konvertieren Sie den Datetime-Wert in einen String:

SELECT CONVERT(nvarchar(10), GETDATE(), 120) 

(Dies wurde getestet und funktioniert tatsächlich gegen SQL Server Compact)

0

Die altmodische Art und Weise diese Server in SQL zu tun, die für Ihre Zwecke arbeiten:

select dateadd(day, datediff(day, 0, signup_date), 0) 

Die datediff() die Anzahl der Tage wird (als Integer) seit der Zeit 0. Der dateadd() dies trägt Nummer zurück.

select dateadd(day, datediff(day, '2000-01-01', signup_date), '2000-01-01') 

EDIT:

Wenn Sie wollen einfach nicht die Zeit sehen,

Wenn Sie 0 als Datum nicht, Sie ein gültiges Datum an ihre Stelle setzen können konvertieren Sie das Datum in einen String:

select convert(nvarchar(10), signup_date, 120) 

(ich das YYYY-MM-DD-Format empfehlen, aber andere sind available.)

+0

Die Zeit wird immer noch zurückgegeben. – Linesofcode

+0

Funktioniert auch nicht Ihre Bearbeitung. Fehler: 'Der angegebene Datentyp ist nicht gültig. [Datentyp (falls bekannt) = varchar] ' – Linesofcode

+0

Verwenden Sie nvarchar (10) - SQL Compact ist nur Unicode – ErikEJ

-1

Um einen String-Wert zu erhalten, verwenden hier CONVERT

select convert(varchar(10), signup_date, 11) 

prüfen für verschiedene Formate:

https://msdn.microsoft.com/en-us/library/ms187928.aspx

ein Datum zu erhalten, und Streifen aus nur die Zeit, dies zu tun

Select Cast (signup_date as DATE) 
+0

Keine der Lösungen funktioniert. Der Fehler: 'Der angegebene Datentyp ist nicht gültig. [Datentyp (falls bekannt) = DATUM] ' – Linesofcode

0

Ich habe versucht, dies und viele andere Lösungen. Ich wollte eine generische Lösung, die mit jeder LCID funktioniert. Meine Lösung ist ein bisschen verschachtelter Code, aber es funktioniert perfekt für mich. Es ist ein Buchungssystem, in dem ich herausfinden musste, wer an einem bestimmten Datum ankam. ArriveDate ist die Spalte, d ist das Datum, das ich möchte.

SQL = "SELECT * FROM tablename WHERE dateadd(day, datediff(day, 0, 
ArriveDate), 0)=' " & Format(d, "yyyy-MM-dd") & " ' "