103

この質問がここですでに見つからないことに驚いています。

日時変数があり、それを文字列に変換して、別の文字列に追加できるようにします。簡単に日時に戻せる形式で欲しいです。

これどうやってするの?

(日付部分と時間部分が欲しいです。)

4

10 に答える 10

171

次のクエリは、現在の日時を取得して文字列に変換します。次の形式で
yyyy-mm-dd hh:mm:ss(24h)

SELECT convert(varchar(25), getdate(), 120) 
于 2013-02-22T17:25:38.683 に答える
34

convert文字列へのaには多くの異なる方法がありdatetimeます。これが1つの方法です:

SELECT convert(varchar(25), getdate(), 121)  – yyyy-mm-dd hh:mm:ss.mmm

デモを見る

すべてのコンバージョンのリストがあるウェブサイトは次のとおりです。

SQLServerで日時と日付をフォーマットする方法

于 2013-02-22T17:26:04.593 に答える
10

要件と使用しているバージョンに応じて、3つの異なる方法があります。

これが方法です。

1)変換の使用

DECLARE @DateTime DATETIME = GETDATE();
--Using Convert
SELECT
    CONVERT(NVARCHAR, @DateTime,120) AS 'myDateTime'
    ,CONVERT(NVARCHAR(10), @DateTime, 120) AS 'myDate'
    ,RIGHT(CONVERT(NVARCHAR, @DateTime, 120),8) AS 'myTime'

2)Castの使用(SQL Server 2008以降)

SELECT
    CAST(@DateTime AS DATETIME2) AS 'myDateTime'
    ,CAST(@DateTime AS DATETIME2(3)) AS 'myDateTimeWithPrecision'
    ,CAST(@DateTime AS DATE) AS 'myDate'
    ,CAST(@DateTime AS TIME) AS 'myTime'
    ,CAST(@DateTime AS TIME(3)) AS 'myTimeWithPrecision'

3)固定長文字データ型の使用

DECLARE @myDateTime NVARCHAR(20) = CONVERT(NVARCHAR, @DateTime, 120);
DECLARE @myDate NVARCHAR(10) = CONVERT(NVARCHAR, @DateTime, 120);

SELECT
    @myDateTime AS 'myDateTime'
    ,@myDate AS 'myDate'
于 2014-02-19T03:42:16.230 に答える
8

convertMicrosoft SQL Serverのステートメントを使用して、日付を文字列に変換できます。使用される構文の例は次のとおりです。

SELECT convert(varchar(20), getdate(), 120)

上記は、現在の日付と時刻をYYYY-MM-DD HH:MM:SS24時間制の形式の文字列で返します。

ステートメントの最後にある数値を、返される文字列の形式を変更する多くの数値の1つに変更できます。これらのコードのリストは、MSDNのCASTおよびCONVERTリファレンスセクションにあります。

于 2013-02-22T17:28:46.887 に答える
8

CAST前の回答のand関数に加えて、CONVERTSQL Server 2012以降を使用している場合は、FORMATDATETIME関数を使用してベースの型を文字列に変換します。

元に戻すには、反対の関数PARSEまたはTRYPARSE関数を使用します。

書式設定スタイルは.NETに基づいており(ToString()メソッドの文字列書式設定オプションと同様)、カルチャに対応しているという利点があります。例えば。

DECLARE @DateTime DATETIME2 = SYSDATETIME();
DECLARE @StringResult1 NVARCHAR(100) = FORMAT(@DateTime, 'g') --without culture
DECLARE @StringResult2 NVARCHAR(100) = FORMAT(@DateTime, 'g', 'en-gb') 
SELECT @DateTime
SELECT @StringResult1, @StringResult2
SELECT PARSE(@StringResult1 AS DATETIME2)
SELECT PARSE(@StringResult2 AS DATETIME2 USING 'en-gb')

結果:

2015-06-17 06:20:09.1320951
6/17/2015 6:20 AM
17/06/2015 06:20
2015-06-17 06:20:00.0000000
2015-06-17 06:20:00.0000000
于 2015-06-17T13:33:20.967 に答える
6
SELECT CONVERT(varchar, @datetime, 103) --for UK Date format 'DD/MM/YYYY'

101-米国-MM/DD / YYYY

108-時間-HH:MI:SS

112-日付-YYYYMMDD

121-ODBC-YYYY-MM-DD HH:MI:SS.FFF

20-ODBC-YYYY-MM-DD HH:MI:SS

于 2018-09-12T08:56:05.993 に答える
2

t-sqlのCASTおよびCONVERT構文を確認します。

http://msdn.microsoft.com/en-us/library/ms187928.aspx

于 2013-02-22T17:28:17.260 に答える
2

以下を試してください:

DECLARE @myDateTime DATETIME
SET @myDateTime = '2013-02-02'

-- Convert to string now
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
于 2013-02-22T18:09:14.010 に答える
2

これには多くの人が答えていますが、最も簡単な解決策が省略されているように感じます。

SQL SERVER(2012以降)には、ここに示すように、DATETIME2に相当する暗黙の文字列があります。

「datetime2でサポートされている文字列リテラル形式」のセクションを参照してください。

OPの質問に明示的に答えるには:

DECLARE @myVar NCHAR(32)
DECLARE @myDt DATETIME2
SELECT @myVar = @GETDATE()
SELECT @myDt = @myVar
PRINT(@myVar)
PRINT(@myDt)

出力:

Jan 23 2019 12:24PM             
2019-01-23 12:24:00.0000000

注:最初の変数(myVar)は、実際には値'2019-01-23 12:24:00.0000000'も保持しています。Jan 23 2019 12:24PMを使用すると呼び出されるSQLSERVERのデフォルトのフォーマット設定により、フォーマットされるだけですPRINT。ここでつまずかないでください、(myVer)=の実際の文字列'2019-01-23 12:24:00.0000000'

于 2019-01-23T20:30:06.830 に答える
0

私のストアドプロシージャでは、次のように動作します。

convert(varchar(10), StartingDate) AS 'StartingDate'

于 2021-04-29T04:47:10.113 に答える