it-swarm.com.de

Einfache DateTime SQL-Abfrage

Wie frage ich ein DateTime-Datenbankfeld innerhalb eines bestimmten Bereichs ab?

Ich benutze SQL Server 2005

Fehlercode unten

SELECT * 
  FROM TABLENAME 
 WHERE DateTime >= 12/04/2011 12:00:00 AM 
   AND DateTime <= 25/05/2011 3:53:04 AM

Beachten Sie, dass ich Zeilen innerhalb eines bestimmten Zeitraums abrufen muss. B. 10 Minuten Zeitbereich.

Derzeit wird SQL mit falscher Syntax in der Nähe von '12' zurückgegeben. "

78
ove

Sie haben ein einfaches Anführungszeichen verpasst:

SELECT * 
FROM TABLENAME 
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'

Es wird außerdem empfohlen, das ISO8601-Format JJJJ-MM-TTThh: mm: ss.nnn [Z] zu verwenden, da dies nicht von der lokalen Kultur Ihres Servers abhängt.

SELECT *
FROM TABLENAME 
WHERE 
    DateTime >= '2011-04-12T00:00:00.000' AND 
    DateTime <= '2011-05-25T03:53:04.000'
106
Alex Aza

Sie benötigen Anführungszeichen für die Zeichenfolge, die Sie als Datum ausgeben möchten. Sie können auch ZWISCHEN hier verwenden:

 SELECT *
   FROM TABLENAME
  WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'

In der Antwort auf die folgende Frage finden Sie Beispiele zum expliziten Konvertieren von Zeichenfolgen in Datumsangaben unter Angabe des Formats:

SQL Server String zu Datum Konvertierung

8
Milimetric

Dies hat bei mir sowohl in SQL Server 2005 als auch in 2008 funktioniert:

SELECT * from TABLE
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'}
  AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}
6
Jamaria

Sie können den folgenden Code ausführen

SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
3
Abdul Rafey

Öffnen Sie die Access-Datei, in die Sie SQL-Daten exportieren möchten. Löschen Sie alle vorhandenen Abfragen. Jedes Mal, wenn Sie den SQL Server-Importassistenten ausführen, wird eine Abfrage in der Access-Datenbank erstellt, die gelöscht werden muss, bevor Sie den SQL-Export ausführen können Wizard erneut.

1
Dan
SELECT * 
  FROM TABLENAME 
 WHERE [DateTime] >= '2011-04-12 12:00:00 AM'
   AND [DateTime] <= '2011-05-25 3:35:04 AM'

Wenn dies nicht funktioniert, schreiben Sie bitte Ihre Tabelle aus und posten Sie sie hier. Auf diese Weise erhalten Sie schnell die richtige Antwort.

1
clyc
select getdate()

O/P
----
2011-05-25 17:29:44.763

select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM'

O/P
---
22/06/1432  5:29:44:763PM
1
jack.mike.info

Andere haben bereits gesagt, dass Datumsliterale in SQL Server in einfache Anführungszeichen eingeschlossen werden müssen, aber ich möchte hinzufügen, dass Sie Ihr Monat/Tag-Verwechslungsproblem auf zwei Arten lösen können (dh das Problem, bei dem 25 als der Monat und 5 als der Monat angesehen wird) Tag) :

  1. Verwenden Sie ein explizites Convert(datetime, 'datevalue', style), wobei style einer der numerischen Stilcodes ist, siehe Cast and Convert . Der style-Parameter dient nicht nur zum Konvertieren von Datumsangaben in Zeichenfolgen, sondern auch zum Bestimmen, wie Zeichenfolgen in Datumsangaben analysiert werden.

  2. Verwenden Sie ein regionenunabhängiges Format für Datumsangaben, die als Zeichenfolgen gespeichert sind. Ich verwende das Format 'yyyymmdd hh: mm: ss' oder das ISO-Format yyyy-mm-ddThh:mi:ss.mmm. Basierend auf Experimenten gibt es KEINE anderen sprachinvarianten Formatstrings. (Obwohl ich denke, dass Sie die Zeitzone am Ende einfügen können, siehe den obigen Link).

1
ErikE