2016-06-13 3 views
0

私はMS AccessのSQLクエリを作成しています。アクセス日時文字列に変換します。時間はミリタリーとして保存されています。変換したくないです。

2つのフィールドは、DateTimeです。私は私ではなく、午前22時30分の10:30 PMを取得

SELECT cDate(Format(table1.BeginTime,"hh:mm")), 

次のクエリを実行すると30

:6分の30:開始/終了時間は22です。私は12時間形式に変換したくない。 Miliaryの時間形式はどのように保つのですか?

+3

'cDate'は、書式を持たない日付を返します。このフォーマットは、値を表示するたびに表示されます。デバッガの中だけであれば、心配する必要はありません。 –

答えて

2

私はAccess 2013でいくつか試してみましたが、@Bjonesにはポイントがあるようです。

SQL ServerではFormatはclr .net関数であり、format(date, 'hh:mm')は12時間、Format(date, 'HH:mm')は24時間になります。

@Bjonesが指摘しているように、元の列がテキストまたは日付または時刻としてどのように保持されているかという疑問があるかもしれません.....そして、私が試した結果、あなたの関数の順序は間違っています。

cDate(Format(table1.BeginTime,"HH:mm")) 

cDateは、コンテンツを日付に変換しますが、フォーマットしません。

ので

FORMAT(cDate(table1.BeginTime), "hh:mm") 

または

FORMAT(cDate(table1.BeginTime), "HH:mm") 

または

FORMAT(cDate(table1.BeginTime), "Short Time") 

時間がテキストとして保存されている場合は何をしたいあなたを与える必要があります。日付時刻として保存する場合は、すべて一緒にcDateを削除して、

FORMAT(table1.BeginTime, "Short Time") 

@Bjonesと答えてください。

+0

小文字の 'hh'はMS Access 2010で24時間稼げるように完全にうまく動作します。 – BJones

+0

@bjones良いキャッチC#とSQLは同じではないので、Accessが同じ扱いをしていると私は知りませんでした。しかし、関数の順序は実際の原因であった。なぜなら、cDateは12時間形式を取得し、それが最も外側の関数であったからである。 – Matt

0

フィールドを既にDateTime形式にしているので、あなたが取り除く必要があるのはcDate関数だと思います。

SELECT Format(table1.BeginTime,"hh:nn") 
0

クエリの結果がどのようなものかはわかりません。

日付とビューこの24時間形式で、使用する必要がある場合:

Select table1.BeginTime 

hの列のためのFormatプロパティを適用します。HH NNを: NN

あなたは24時間形式、使用中の文字列としてフォーマットされた日付が必要な場合:

フォーマットは不要です。偶数フォーマットストリングHしかしいずれの場合も

メートルがヶ月であるように、NNNNまたはHH:ミリメートルが動作するには、Hを使用して行います。

関連する問題