0

特定の日付だけでなく特定の時間を持つ行をテーブルに戻そうとしています。

現時点では、次を使用してクエリの日付部分を適切に処理できます。

CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05%' 

これは完全に機能し、col1の値が11月5日であるすべての行を返します。ただし、次のように時間を最後に追加したい場合:

CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05 15%' 

時間が15に設定された行がある場合でも、そのクエリは行を返しません。

クエリの時間要素には、ある種の異なる構文が必要なようです。誰かがこれを確認できるかどうか疑問に思いましたか?

4

2 に答える 2

1

SQL Server の場合:

create table #test(part varchar(10),lastTime datetime)
go

insert into #test (part ,lastTime )
values('A','2012-11-05 10:30')

insert into #test (part ,lastTime )
values('B','2012-11-05 15:00')

insert into #test (part ,lastTime )
values('A','2012-11-05 16:15')

go

select * from #test where CONVERT(varchar,lastTime,126) like '2012-11- 05T15 %' ----OK

B   2012-11-05 15:00:00.000

select * from #test where CONVERT(varchar,lastTime, 21 ) like '2012-11-05 15%' ----OK

B   2012-11-05 15:00:00.000

select * from #test where CONVERT(varchar,lastTime,21) like '2012-11-05 %15%' -- バグあり

B   2012-11-05 15:00:00.000
A   2012-11-05 16:15:00.000

パフォーマンスを考慮してください:

select * from #test where lastTime  >= CONVERT(datetime, '2012-11-05 15:00:00') and lastTime  < CONVERT(datetime, '2012-11-05 16:00:00')
于 2012-11-08T01:42:47.140 に答える
0
CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05T15%' 

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

フォーマット 126 は、ISO8601 yyyy-mm-ddThh:mi:ss.mmm (スペースなし) を返します。

于 2012-11-07T20:59:12.857 に答える