2009-06-04 11 views
0

SQL Server 2005(express)を実行しています。 私はクエリでDATEFORMATとCONVERTを使用しようとしています。 私は問題に遭遇しています。だから私は最初に、それらの機能がどこでも使用できるかどうか尋ねたいと思っていました。DATEFORMATとCONVERTはどこで使用できますか? (SQLサーバー)

私はすでにSELECTで使用できることを知っています。 しかし、それらはWHEREでも使用できますか?例えば

SELECT * 
    FROM review AS R, section AS SC, class AS CL, inserted AS M, section AS SC2, class AS CL2 
    WHERE 
    R.sectionId=SC.sectionId AND SC.classId=CL.classId AND 
    M.sectionId=SC2.sectionId AND SC2.classId=CL.classId AND 
    CL.classYear=CL2.classYear AND CL.classQuarter=CL2.classQuarter AND 
    M.meetingDay = DATEPART(weekday,R.reviewStart) AND 
    (
     CONVERT(VARCHAR(8), R.reviewStart, 108) between CONVERT(VARCHAR(8), M.meetingStart, 108) and CONVERT(VARCHAR(8), M.meetingEnd, 108) OR 
     CONVERT(VARCHAR(8), R.reviewEnd, 108) between CONVERT(VARCHAR(8), M.meetingStart, 108) and CONVERT(VARCHAR(8), M.meetingEnd, 108) OR 
     CONVERT(VARCHAR(8), M.meetingStart, 108) between CONVERT(VARCHAR(8), R.reviewStart, 108) and CONVERT(VARCHAR(8), R.reviewEnd, 108) OR 
     CONVERT(VARCHAR(8), M.meetingEnd, 108) between CONVERT(VARCHAR(8), R.reviewStart, 108) and CONVERT(VARCHAR(8), R.reviewEnd, 108) 
    ) 

はM.meetingDay = DATEPART ... ならびにBETWEENもののすべての部分での使用を参照してください。

それは法的ですか?

おかげ

答えて

1

はい、それはあなたが経験している問題は、私は多くのガイダンスを提供することはできませんが何であるかを言うことはありませんが、私はの長さを見てみることを傾けられる法的

ですあなたのvarchar文字列。日時文字列には8文字以上が必要です。 varchar(8)を使用して文字列の一部を切り捨てていますか?

+0

形式108の形式はhh:mi:ssで、8文字です。 –

+0

はい私はその場合、datetimeのhh:mm:ss部分だけを取得しようとしています。 私は完全なSQLと私のエラーメッセージを投稿すると思います。 新しい質問を作成する必要がありますか? –

+0

質問の内容が大きく異なる場合は、新しい質問が適切です。 –

0

多分少し話題ですが、新しいtime type that stores exactly the time of the day(日付部分はありません)があるので、SQL 2008 Expressへの移行を調査し、2008年に導入された新しいdatetime型を使用する必要があります。

+0

私はリモートサーバーを使用していますので、サーバー上で選択する必要はありません。 しかし、それは学校のプロジェクトのためのものであり、ほぼ終わりです。 これはすべて正常に動作します。ありがとう –

関連する問題