特定の範囲内でDateTimeデータベースフィールドをクエリする方法
SQL Server 2005を使用しています
下記のエラーコード
SELECT *
FROM TABLENAME
WHERE DateTime >= 12/04/2011 12:00:00 AM
AND DateTime <= 25/05/2011 3:53:04 AM
特定の時間範囲内で行を取得する必要があることに注意してください。例、10分の時間範囲.
現在SQLは '12'付近の不正確な構文で戻ります。 "
あなたは一重引用符を逃しました:
SELECT *
FROM TABLENAME
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'
また、ISO 8601形式のYYYY-MM-DDThh:mm:ss.nnn [Z]を使用することをお勧めします。これは、サーバーの地域の文化に依存しないためです。
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2011-05-25T03:53:04.000'
日付として渡す文字列を引用符で囲む必要があります。ここでBETWEENを使用することもできます。
SELECT *
FROM TABLENAME
WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'
形式を指定しながら文字列を明示的に日付に変換する方法の例については、次の質問に対する回答を参照してください。
これは、SQL Server 2005と2008の両方で私のために機能しました。
SELECT * from TABLE
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'}
AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}
あなたは以下のコードを実行することができます
SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
SQLデータをエクスポートしようとしているアクセスファイルを開きます。そこにあるすべてのクエリを削除します。 SQL Serverインポートウィザードを実行するたびに、失敗した場合でも、SQLエクスポートWizardを再度実行する前に、削除する必要があるクエリがAccess DBに作成されます。
SELECT *
FROM TABLENAME
WHERE [DateTime] >= '2011-04-12 12:00:00 AM'
AND [DateTime] <= '2011-05-25 3:35:04 AM'
これでうまくいかない場合は、あなたのテーブルを書き出してここに投稿してください。これは私達が私達があなたに正しい答えを早く得るのを助けるでしょう。
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
SQL Serverの日付リテラルは一重引用符で囲む必要があると既に言っている人もいますが、月/日の混同の問題を2つの方法で解決できることを付け加えたいと思います。日) :
明示的なConvert(datetime, 'datevalue', style)
を使用してください。ここで、styleは数値スタイルコードの1つです。 Cast and Convert を参照してください。 styleパラメータは、日付を文字列に変換するためだけでなく、文字列を日付に変換する方法を決定するためにも使用されます。
文字列として格納された日付には、地域に依存しない形式を使用します。私が使用しているものは 'yyyymmdd hh:mm:ss'、またはISOフォーマットのyyyy-mm-ddThh:mi:ss.mmm
です。実験に基づいて、他の言語に依存しないフォーマット文字列はありません。 (私はあなたが最後にタイムゾーンを含めることができると思いますが、上記のリンクを参照してください)。