-4

Ive 列 CREATEDDATE (DATETIME) $startDate $endDate format ('d/m/Y') の 2 つの日付の間のすべての行を見つける必要がありますか?

SELECT * FROM TABLE 
 WHERE CREATEDDATE >= CONVERT(DATETIME, $startDate, 103)
 AND CREATEDDATE <= CONVERT(DATETIME, $endDate, 103)

http://sqlfiddle.com/#!3/b0478/5問題はどこにある?!

4

3 に答える 3

2

これは簡単で、グーグルで検索できます
..質問する前にまずグーグルで検索する必要があります..

Select * From Tbl where CREATEDDATE between $date1 and  $date2 

$date1 の場合は、 ('d/m/y' の場合) varcharを使用する必要があります。SQL での日時変換については、このリンクを参照できます。CONVERT(DATETIME, $date1, 103)

解決策は次のとおりです。

更新されたフィドル

于 2013-03-11T13:22:35.573 に答える
1

sqlfiddle の実際の問題は、変数宣言で文字列を日付にキャストしていることですが、SQL 文は次のとおりです。

declare @FromDate datetime = '11/03/2013'  --here a type casting!!
declare @ToDate datetime = '12/03/2013'

次に、これは効果がありません:

xCreatedDate < convert(datetime,@ToDate,103)  --@toDate is yet a date!!

修正するには、変数宣言で datetime を date に変更します。

declare @FromDate varchar(10) = '11/03/2013'  --here without casting!!
declare @ToDate varchar(10) = '12/03/2013'
于 2013-03-11T15:16:46.553 に答える
0
select CREATEDDATE from table where CREATEDDATE BETWEEN $date1 AND $date2

またはあなたが使用することができます

select CREATEDDATE from table where CREATEDDATE > $date1 AND CREATEDDATE < $date2
于 2013-03-11T13:24:23.093 に答える