-1

クエリ

従業員テーブルから入社年、入社月、入社日を取得する

これは私が実行しなければならない私のクエリです。このために、次のスクリプトを作成します。

select 
    SUBSTRING (convert(varchar,joining_date,103),7,4) , 
    SUBSTRING (convert(varchar,joining_date,100),1,3) , 
    SUBSTRING (convert(varchar,joining_date,100),5,2) 
from 
    EMPLOYEE

結果は次のとおりです。http://d.pr/i/vObI

しかし、私がに変更convert(varchar,joining_date,100)したときconvert(varchar,joining_date,101)

結果は次のようになります: http://d.pr/i/G5fZ

このパラメータの意味を誰か説明してもらえますか?

4

2 に答える 2

0

DATEPARTを使用して日時部分を分割して取得するためのより良いアプローチがあると思います:

  select DATEPART(YEAR, [joining_date]), 
  DATEPART(MONTH, [joining_date]), 
  DATEPART(DAY, [joining_date]) from EMPLOYEE

または、たとえば名前に興味がある場合は、DATENAME を使用します。

 select DATEPART(YEAR, [joining_date]), 
 DATENAME(MONTH, [joining_date]), 
 DATEPART(DAY, [joining_date]) from EMPLOYEE

ただし、DATENAME の MSDN によると、「戻り値は、SET LANGUAGE を使用して設定された言語環境によって異なります」。

最初の質問について-これらのパラメーターは基本的にスタイルであるか、ここで説明するように地域固有のコードと呼びます.DBに対してさまざまなクエリを実行するだけで、返される文字列が表示されます-予期しない結果が得られる理由がわかります. 詳細については、MSDN: CAST and CONVERTを参照してください。

于 2013-05-10T13:02:46.793 に答える