SQLのDateTime形式から時間を取得する方法


182

SQL Server 2005および2008のデフォルト出力を使用したSQLクエリを使用して、DateTime列から時間のみを取得したい:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

この出力が欲しい:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10

SQLでto_charメソッドを検索します。フォーマットを指定して目的の出力を取得できます
Naveen Babu

1
select convert(varchar(10)、getdate()、108)
rahularyansharma '10年

SELECT CONVERT(VARCHAR(8),GETDATE(),108)SQLサーバーの可能性があります
V4Vendetta '10 / 10/11

回答:


342

SQL Server 2008:

SELECT cast(AttDate as time) [time]
FROM yourtable

以前のバージョン:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable

34

SQLサーバーを想定

SELECT CONVERT(VARCHAR(8),GETDATE(),108)


getdate()でのみ機能します。selectconvert(varchar(8)、 '2011-02-09 13:09:00'、108)を渡すと、日付から最初の8文字が生成されます。これを修正する方法?
Aparna 2017

24

SQL Server 2008+には「時間」データ型があります

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

古いバージョンの場合、varchar変換なし

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...

このSELECT CONVERT(VARCHAR(8)、GETDATE()、108)AS HourMinuteSecond、CONVERT(VARCHAR(8)、GETDATE()、101)AS DateOnlyを使用しない理由パフォーマンスの問題はありますか?
rahularyansharma

2
@rahularyansharma:必要に応じて、日付にvarchar変換を使用しません
gbn

私が知りたいのは、あなたの解決策の代わりにこれを使用した場合、パフォーマンスの低下はありますか?
rahularyansharma '10 / 10/11

1
@rahularyansharma:このstackoverflow.com/questions/133081/…に
gbn

1
フォローしていない人のために、0最小日付を表します1900-01-01。したがって、これは列の値と0の間の(負の)日数を取得し、日付の部分を「ゼロにする」列の値にそれらの負の日を追加する1900-01-01と、時間のみが残ります。
xr280xr 2015年

13

ミリ秒のスタックなしでdatetimeから時刻を取得する最も簡単な方法は次のとおりです。

SELECT convert(time(0),getDate())

10

これを使ってみてください

  • 日付まで

    select cast(getdate() as time(0))
  • TinyTimeまでの時間

    select cast(orig_time as time(0))





3

私はよくこのスクリプトを使用して、DateTimeからTimeを取得します。

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

なぜ私は時間の前に9を得るのです。..結果:9 23:21
サイードムハンマドIdrees

2

日時から時間を取得するには、次を使用できます

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)

2

このスタイルで日付を入力する場合:2013年10月23日10:30 AM

これを使って

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() メソッドは3つのパラメータを取ります

  1. データ・タイプ
  2. 列/値
  3. スタイル:利用可能なスタイルは100から114です。範囲内から選択できます。日付の形式を変更するには、1つずつ選択します。

2

サーバーの日付を取得する

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

または

テーブルに格納されている場合

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

結果:

11:41 AM



1

MSSQL2012以降

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...または...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )

1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

個人的には、CONVERT()よりTRY_CONVERT()の方が好きです。主な違い:キャストが失敗した場合、TRY_CONVERT()はNULLを返しますが、CONVERT()はエラーを発生させます。


-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

出力:から

05:11:26
05:11:24
05:11:24

動作しないためエラーが発生します'to_char' is not a recognized built-in function name.
captainsac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.