SQLServerの日時をより短い日付形式に変換する


83

私が持っているdatetime私にこのようなデータを提供しますSQL Serverの列10/27/2010 12:57:49 pmなど-と私は、この列を照会したいが、単にSQL Serverがその日の月と年を返す必要があります。2010 10 27またはそのようなもの。

私が研究すべき機能は何ですか?

別の日付データ型に変換しようとすべきですか?それとも単に文字列に変換しますか?


2
この記事を
ご覧

6
SQLServerのどのバージョン?? SQL Server 2008では、新しい日付と時刻に関連するデータ型が多数導入されました。たとえばDATE、2008を使用SELECT CAST(YourDateTimeColumn AS DATE)している場合は、日付のみを使用して、時刻部分を取得できません。
marc_s 2012年


回答:


123

見ていCONVERTを。3番目のパラメーターは、変換する日時スタイルです。

例えば

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) -- dd/MM/yyyy format

12
106は「
ddmonyy

3
@nahabあなたは正しいです。また、年が短くなるのを防ぐために、varchar(10)の代わりにvarchar(11)を使用する必要がありました(たとえば、1953年ではなく195を見ました)
Henrov 2013年

6
また、結果をmm / dd / yyyyでフォーマットする場合は、101を使用できます
iliketocode 2017

58

これを試して:

print cast(getdate() as date )


5
私はこのオプションが受け入れられた答えよりも好きです。列を日付形式のままにして、varcharだけでなく「orderby」が正しく機能するようにします。
ミルン2017年

2
これは、SQL Server2005以前では機能しません。DATEデータ型は、SQL 2008で導入されました
JerryOL

上で述べたように、日付データ型を取得することは確かに素晴らしいことですが、特定の形式( "dd MM yyyy"など)が予想される場合は、さらに多くのことが必要になります。
trincot 2018


10

CASTとCONVERTに加えて、Sql Server 2008を使用している場合は、日付型に変換し(または、その型を使用して開始し)、オプションで再度varcharに変換できます。

declare @myDate date
set @myDate = getdate()
print cast(@myDate as varchar(10))

出力:

2012-01-17

6

SQL Server 2005では、次のように使用します。

select replace(convert(char(10),getdate(),102),'.',' ')

結果:2015 03 05


5

このような結果を与える日時フィールドがある場合2018-03-3008:43:28.177

提案: あなたが変更したい日時をた日付2018年3月30日のように表示されるように

cast(YourDateField as Date)

1
あなたは、4年前にこの答えを与えたもうjabu.hlong ...新しいものを追加していない
パヴェルCzapski

日付がOPの形式で表示されるかどうかは保証されていません。yyyy-MM-dd、dd / MM / yyyy、dd / MM / yyyy 00:00:00、またはそれ以外の可能性があります。
trincot 2018

4

mm / dd / yyの最短の日付形式は、次のコマンドで取得できます。

Select Convert(varchar(8),getdate(),1)

0

日付キーワードを追加するだけです。たとえば、orderdate> '2014-10-01'がdate(orderdate)でグループ化されている注文からdate(orderdate)、count(1)を選択します。

orderdateは日時です。このクエリは、日時ではなくその日付の注文を表示します。

日時列に日付キーワードを適用すると、短い日付に変更されます。


0

SQL Serverのすべてのバージョンの場合:dateadd(dd、datediff(dd、0、getdate())、0)


日付がOPの形式で表示されるかどうかは保証されていません。yyyy-MM-dd、dd / MM / yyyy、dd / MM / yyyy 00:00:00、またはそれ以外の可能性があります。
trincot 2018

0

元のDateTimeフィールド:[_ Date_Time]

Shortdateに変換: 'Short_Date'

CONVERT(date, [_Date_Time]) AS 'Short_Date'

これは、文字列としてレンダリングするためにインターフェイスに残される日付データ型を返すため、「27/12/201800:00:00」を生成する可能性があります。それはOPが求めたものではありません。
trincot 2018

これは彼が取得しようとしたものです--dd / MM / yyyy; そして私の答えは、2018年11月20日を生成し、このものを
ユセフAlbakoush

まあ最初のすべて2018年11月20日のされていない/ MM / YYYYが、YYYY-MM-DDをddを。しかし、レンダリングは実際にはシステム(およびロケール)に依存します。私のシステムでは、時間、分、秒(すべてゼロ)も生成します。これは、日付を文字列として表す方法をSQLに指示しておらず、OPには正確な文字列形式が必要なためです。
trincot 2018

まず、2018-11-20は、私のPCがアラビア語用に構成されているためです。次に、PCの短い日付を変更してから試してみます
Yousef Albakoush 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.