이 비디오에서는 우리는 비록 방법을 사용하여 SQL 사이 운영자;우리가 당신을 보여주 왜 당신이 원하는 것을 사용하여 사이 운영하는 방법과 함께 사용하는 경우 그것은 DATETIME 유형입니다.
사이에 운영자가 사용하는 것과 동일한 기능 및 조합의><=비교 연산자,그러나 더 소형 범위는 비교입니다. 이 문서를 통해 간 후에는 sql 서버에 대한 자세한 내용을 계속 우리의 다음 필수 SQL 분을 시청하는 것이 좋습니다 것입니다!
비디오를 본 후에는 아래의 샘플 코드를 확인하십시오. 나는 또한 당신이 사용할 성적표를 포함 시켰습니다.
이것은 사이의 연산자에 SQL 분입니다!
다른 필수 SQL 분에 오신 것을 환영합니다. 이 에피소드에서는 SQL server 쿼리의 값 범위를 비교하기 위해 BETWEEN 연산자를 사용하는 방법을 배우려고합니다.
사이의 연산자는 값의 범위를 비교하는 데 사용됩니다. 다음은 12 보다 크거나 같고 28 보다 작거나 같은 값의 범위를 비교하는 데 사용하는 예입니다. 내가 사이의 연산자를 사용할 때,그것은 포함된다.
그것은 우리가 그 사이에 비교하고있는 숫자를 포함 할 것입니다. WHERE 절에서 BETWEEN 을 사용하는 일반적인 형식은 필드를 지정하는 것이므로이 경우”IsoNumericCode”,즉 필드입니다. 그런 다음 연산자 사이;우리는”IsoNumericCode”가 범위 사이에 있기를 원한다고 말하고 있습니다. 그래서 우리는 그것이 12 와 28 사이가되기를 원합니다.
궁금 할 것이 무엇이 보이는 것과 같은 옛날 방식을 사용하여 더 큰 이와 같은 이상과 같습니다. 이것이 어떻게 생겼는지입니다. 면 우리는 같은 일을 할 사용하여 더 큰 이와 같은 이상과 같은지 우리가 어디 IsoNumericCode>=12IsoNumericCode<=28.이것이 SQL server 에서 어떻게 생겼는지 보도록하겠습니다. 우리의 쿼리가 SQL server 에로드되었습니다. 당신은 여기에서 볼 수 있는 우리가 보고에 대한 IsoNumericCode 사 12 28,그것은 같은 줄에,그것은 일반적으로는 것이 얼마나 작성합니다.
SELECT CountryID ,CountryName ,IsoAlpha3Code FROM Application.Countries WHERE IsoNumericCode BETWEEN 12 and 28
내가 그것을 실행하고,여기에 조금 가져 보자. 되돌아 오는 값의 범위는 12 에서 28 까지입니다. 내가 이것을 100 으로 늘리면 더 많은 행이 돌아올 것으로 예상됩니다. 당신은 그들이 100 까지 모든 길을 갈 것을 볼 수있다.순서가 중요하다는 것을 경고하고 싶습니다. 100 에서 12 사이를했다면 아무런 결과도 얻지 못할 것입니다.
기 때문에,당신은 그것에 대해 생각하는 경우,어떤 이는 말은 내가 원하는 숫자 코드를 사…나는 그것을 보다 크거나 같은 100,그리고 보다 작거나 같음 12. 그 사이에는 아무 것도 없습니다. 그래서 아무것도 돌아 오지 않는 잘못입니다. 따라서 순서가 중요하며,사이 연산자를 사용하면 가장 낮은 숫자가 먼저되도록 가지고있는 것이 중요합니다. 좋아,12 와 28 로 돌아 가자.
내가 할 수있는 또 다른 일은 사이에 연산자를 사용하지 않는 것입니다. 그래서 내가 말한다면”사이에 있지 않는 12 월 28 일”내가 정말 말하자 다시 가져올의 모든 행에 국가 테이블이 없는 숫자는 코드보다 크거나 같은 12,작거나 같음 28.
SELECT CountryID ,CountryName ,IsoAlpha3Code FROM Application.Countries WHERE IsoNumericCode NOT BETWEEN 12 and 28
그래서 본질적으로,이 네 개의 행은 그 결과에서 조각 될 것입니다. 이것을 실행합시다. 이제 186 행을 얻고 있음을 알 수 있습니다.
방금 제한없이 쿼리를 크게 수행 한 경우 190 행을 다시 얻는 것을 볼 수 있습니다. 그래서 이것은 그 네 줄이 실제로 새겨 져 있음을 보여주는 역할을합니다. 사실,당신이 다른 테스트를하고 싶다면 나는 12 와 28 사이의 IsoNumericCode 라고 말할 수 있었고 이것은 모든 것을 되 찾을 것입니다.따라서 190 행을 다시 가져옵니다. 정말로,이것은 모든 행을 다시 가져 오는 의미에서 무의미한 종류입니다.
지금까지 우리의 모든 예제는 정수로 작업했습니다. 그러나 다른 많은 데이터 유형과 함께 작동합니다. 우리는 또한 그것을 사용할 수 있는 문자 데이터 형식(VARCHAR),그리고 그것은 동일하게 작동 방법으로 우리는 정렬 순서로 설정,모든 것이 잘 작동합니다.
조심해야한다고 생각하는 데이터 유형 중 하나는”DateTime”데이터 유형입니다.
기 때문에 DateTime 데이터 유형에,당신이 볼 수 있는 시간 구성 요소에서 날짜,그리고 우리는 그냥 사이에만 사용하여 낮과하지 않는 시간,날짜와 시간이 기본값으로 대중 버스를 이용하실 수 있습니다. 그것은 정말로 당신이 생각하는 모든 결과를 얻지 못하고 있습니다. 나는 이것을하는 가장 좋은 방법은 내가 의미하는 바를 당신에게 보여주는 것이라고 생각합니다.
DECLARE @myTable TABLE(Name varchar(40), ModifyDate DateTime)INSERT INTO @myTable (Name, ModifyDate) VALUES ('Tom', '2017-02-01');INSERT INTO @myTable (Name, ModifyDate) VALUES ('Tom', '2017-02-01 08:23:42');INSERT INTO @myTable (Name, ModifyDate) VALUES ('Tom', '2017-02-01 14:04:02');INSERT INTO @myTable (Name, ModifyDate) VALUES ('Tom', '2017-02-03');INSERT INTO @myTable (Name, ModifyDate) VALUES ('Tom', '2017-02-03 22:32:43');
내에 가지고가는 경우는 예를 들어 우리가 선언하는 테이블과 이 표에서 우리가 당겨서에서 날짜 월 1 일을 통해 제 3. 내가 이것을 실행할 때,당신은 내가 5 개의 행을 다시 얻는 것을 보게 될 것입니다.
는 방법을 알 수 있는 시간에 이러한 권리? 날짜에 시간을 지정하지 않으면 자정에 시작하는 날짜와 함께 돌아옵니다. 지금까지,너무 좋아.
큰 문제는 것이 그렇게 무슨 일이 일어날 그 다음에 다른 쿼리를 여기 경우 다시 가져”ModifyDate”1 과 3?영어로 말하면,이 다섯 가지 모두가 돌아올 것으로 예상됩니다. 하지만 내가 지금 말하지 않는 것 모두 다섯은 돌아올 것이기 때문에,하나는 바로 여기에 있는 3 에서 그것을 얻을 때,변환 DateTime 것입니다 실제로 시간 자정입니다. 그래서 그 5 번째 줄을 떨어 뜨릴 것입니다. 내가 여기서 의미하는 바를 보여 드리겠습니다.
SELECT Name, ModifyDateFROM @myTableWHERE ModifyDate BETWEEN '2017-02-01' AND '2017-02-03'ORDER BY ModifyDate
당신이 볼 수 있듯이,지금 그것은 기본적으로 데리고 다만 네 개의 행이기 때문에 우리가 보고에 대한 본질적으로 날짜와 시간은 사이에 자정의 제 1 회 약의 자정 3.
하는 방식으로 작업할 수 있습니다 이것은 시간에 넣어 전 자정입니다. 그래서 그냥…나는 여기서 몇 초 동안 나갈거야. 그래서 지금 내가 이것을 실행하면”11:59:59″초로 이동하기 때문에 5 개의 행을 얻는 것을 볼 수 있습니다.나는 수백 초 등을 세지 않고있다. 솔직히 말해서,나는 그것이 일종의 지저분하다고 느낍니다. 나는 느낌이 경우에 당신이 정말로 원하는 사이에 사용 날짜와 이 경우에는,그리고 당신이 원하는 모든 날짜 가능한 시간에서 3 일을 할 최선의 방법은 사용하 4.
를 선택하는 이름,ModifyDate
에서@됩니다.
어디 ModifyDate 사 2017-02-01’과’2017-02-04′
ORDER BY ModifyDate
이 경우,사진 DateTime 반드시 사용하여 동일한 동작으로 우리는 것이라고 생각과 정수기 때문에,그것의 인클루시브,이것은 자는 그냥 나노초 과거 3. 그냥 재미있어 보입니다. 내가 이것을 실행할 때,당신은 그것이 3 의 후반부에서 그 날짜에 끌어 당기는 것을 볼 것이다.
그래서 그것은 BETWEEN 과 DateTime 을 가진 gotcha 입니다. 그래서 나는 알고 많은 사람들의 종류를 방지 사이에 날짜 및 시간,그리고 그들은 단지 사용이 보다 크고 보다 작은.
그래서 그것은 질문을 구걸;왜 사이에 사용 하시겠습니까?
나는 당신이 사이에 사용하고자하는 두 가지 이유가 있다고 생각합니다. 첫 번째는 가독성입니다. 두 번째는 유지 보수성입니다.
가독성을 위해,무엇을 의미하는면 우리는”ModifyDate”보다 크고 동일한 1 일 과”ModifyDate”보다 작은 같은 4 일,에서 쿼리를 이 얻을 수 있습니다 읽기 어렵기 때문에 그것은 많은 표정을 시작하를 분석하고,논리에서 얻을 수 있습니다 내 방법입니다. 그런 의미에서,사이 읽을 좀 더 자연 보일 수 있습니다. 우리가 DateTime 으로 설명했듯이 실제로하고있는 일을 오해 할 위험이 있습니다.
도에서,유지 관리의 관점하려는 경우에 필요하 다음과 같”ModifyDate”을 이용하실 수 있습 여기에 와서 나는 그것을 변경하는 두 가지 장소입니다. 나는 용어의 첫 번째 부분과 두 번째 부분을 가상으로 바꿔야 할 것입니다. 어디 그냥 사이에 사용하는 경우,나는 단지 한 곳에서 변경해야합니다.
경우에 당신은 알고 싶어지는지 여부에 사용하는 것이 보다 크거나 또는 보다 적은,나 개인적으로 사용하거기 때문에,내가 무엇을 알고 행동으로 촬영했다. 나는 무슨 일이 일어나고 있는지에 대해 좀 더 노골적인 말을 가지고 있다고 느끼고,그것은 나를 기분 좋게 만든다. 나는 걱정할 필요가 없다.”정말 효과가 있니? 그것은 자정 전에 날짜를 복용?”그런 종류의 모든 가정 물건이 창 밖으로 나옵니다. 나는 컴퓨터에 가정이없는 곳에서 일하는 것을 좋아하며,단지 나를 더 행복하게 느끼게합니다. 나는 개인적으로 사이에 사용하지 않습니다. 그러나 당신이 그것을 좋아한다면,나는 그것을 사용하는 것이 좋다고 생각합니다. 그것은 많은 다른 SQL 방언에서 지원되며,나는 그것을 위해 가라고 말합니다. 다시 한 번 감사드립니다,좋은 하루 되세요.