0

I converted some string values to datetime as below:

'20131018'
'20130917'

by using

CONVERT(DATETIME, @date, 101)

I got the following

'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'

How would I remove the timepart of the values?

4

2 に答える 2

0

私が作ったいくつかのコードがあります。これをより速くまたはより良くする方法を理解できる場合は、私に知らせてください! ;)

case --Format date into YYYYMMDD with placeholder 0's 
    when (CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as int ) < 10) AND (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10) 
    then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4)) 
        +'0'+ LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
        +'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
    when (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10) 
    then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4)) 
        +'0'+LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
        +CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
    when (CAST(DATEPART(DD, DATEADD(day, 7, <DATE>)) as int ) < 10) 
        then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4)) 
            + CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
            +'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
    else CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4)) 
        +CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
        +CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
end

仕組みは次のとおりです。それをSELECTの後に置きます。検索と置換を行い、そこに日付を入れます。月と日の桁数をチェックし、必要に応じて文字列に 0 または 2 を挿入します。この問題が発生したときに簡単に使用できるように、このコード ブロックを保存しました。それが役に立てば幸い!

--編集-- 私には、これはあなたがやりたいことの逆かもしれません...

于 2013-10-22T21:45:50.310 に答える
0

SUBSTRING ( expression ,start , length ) ここで、expression はタイムスタンプ文字列、start は 1、length は「yyyy-mm-dd」の長さ、つまり 10 になります。詳細については、http://technet.microsoft.comを確認してください。 /en-us/library/ms187748.aspx

「marc_s」の発言を確認してください。DATETIME の代わりに DATE を使用してください。これはより適切なオプションです。

于 2013-10-22T21:12:20.327 に答える