web-dev-qa-db-ja.com

SQL Serverの時間形式

SQL Serverで時刻のみを表示するようにselectステートメントのdatetime値をフォーマットする方法を知っている人はいますか?

例:

Table cuatomer
id   name   datetime
1    Alvin  2010-10-15 15:12:54:00
2    Ken    2010-10-08 09:23:56:00

テーブルを選択すると、次のように結果が表示されます

id   name    time
1    Alvin   3:12PM
2    Ken     9:23AM

Mssqlでそれを行う方法はありますか?

11
Jin Yong

CONVERT、RIGHT、TRIMを組み合わせて使用​​して、目的の結果を得ることができます。

_SELECT ltrim(right(convert(varchar(25), getdate(), 100), 7))
_

関数に表示される_100_は日付形式mon dd yyyy hh:miAM (or PM)を指定し、そこから正しい文字を取得します。

日時の変換についての詳細 ここ を参照してください。

次のようにCONVERT関数を使用できます。

SELECT CONVERT(varchar, your_datetime, 108)

ただし、これは24時間制で、AM/PMはありません。

10
bobs

これは、日時値から時間を取得し、午前または午後のアドオンも提供します

SELECT RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar,getDate(),100),8)),7) 

日付は常にHH:mmAM形式で返されます。

スペースの不足に注意してください

または

SELECT REPLACE(REPLACE(RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar,getDate(),100),7)),7),'AM',' AM'),'PM',' PM')

日付は常にHH:mm AM形式で返されます。

お役に立てば幸いです。

[〜#〜] pk [〜#〜]

6
Pavan

試してください:

select convert(varchar, getdate(), 108)
+ ' ' + RIGHT(convert(varchar, getdate(), 100), 2) as Time
1

あなたは使うことができるかもしれません:

select

convert(varchar,getdate(),114)

次のようなクエリを手動で作成できる場合があります。

string query = string.Format("INSERT INTO test (DateOnlyField, TimeOnlyField) VALUES ('{0}', '1899-12-30 {1}')", DateTime.Today.ToShortDateString(), TimeString)

これがうまくいくかどうか私は知りません:

Create Table Schedule( ScheduleID Integer Identity, ScheduledTime DateTime )

Go

Insert Into Schedule( ScheduledTime ) Values( '10:15:00 AM' )

Go

Select ScheduledTime As DBScheduledTime, Convert( VarChar( 10 ), ScheduledTime, 114 ) As ScheduledTime

From Schedule

Go

Drop Table Schedule

Go
0
joshcaza

SQL Server 2008以降を使用している場合次のステートメントを使用できます。

SELECT Convert( VarChar( 10 ), CAST([columnName] AS TIME(0)), 100 )
0
Edson Sousa