날짜를 기준으로 데이터를 가져 오는 SQL

Andrewxt

매장 정보와 개인 거래로 가득 찬 데이터베이스가 있습니다. 두 개의 웹 페이지가 있습니다. 하나는 상점 이름에 대한 사용자 입력을 받고 해당 상점에 대한 모든 트랜잭션 정보를 가져 오는 쿼리를 실행합니다. 시작 날짜와 종료 날짜를 입력 한 다음 해당 날짜 사이의 트랜잭션에 대한 쿼리를 실행하는 거의 동일한 다른 페이지가 있습니다. 상점 이름에 대한 것은 완벽하게 작동하지만 날짜에 대한 것은 아무것도 표시하지 않습니다. 나는 여전히 html / php / sql을 배우고 있지만 첫 페이지가 어떻게 작동하는지 정확히 알고 있으므로 두 번째 페이지에서도 동일한 기능이 작동하지 않는 이유를 알 수 없습니다. 누군가 나를 도울 수 있다면 감사하겠습니다.

작동하는 상점 이름 검색의 첫 페이지입니다.

<?php

$transaction = $_REQUEST["StoreName"];

    require_once 'login.php';

    $connection = mysqli_connect(
           $db_hostname, $db_username,
           $db_password, $db_database);



       $sql = "SELECT * FROM PURCHASE WHERE StoreName LIKE '%".$transaction."%'";
        $result = $connection->query($sql);

    ?>

    Purchases Made From <?php echo $transaction ?>
<table border="2" style="width:100%">
    <tr>
                  <th width="15%">Item Name</th>
                  <th width="15%">Item Price</th> 
                  <th width="15%">Purchase Time</th>
                  <th width="15%">Purchase Date</th>
                  <th width="15%">Category</th>
                  <th width="15%">Rating</th>
                </tr>
</table>
     <?php
        if($result->num_rows > 0){
            // output data of each row
            while($rows = $result->fetch_assoc()){ ?>
               <table border="2" style="width:100%">
                <tr>
                    <td width="15%"><?php echo $rows['ItemName']; ?></td>
                    <td width="15%"><?php echo $rows['ItemPrice']; ?></td>
                    <td width="15%"><?php echo $rows['PurchaseTime']; ?></td>
                    <td width="15%"><?php echo $rows['PurchaseDate']; ?></td>
                    <td width="15%"><?php echo      $rows['PurchaseCategory']; ?></td>
                    <td width="15%"><?php echo $rows['Rating']; ?></td>
                </tr>
                <?php
            }
        }
        ?>

그리고 여기에 데이터를 반환하지 않는 날짜 검색 페이지가 있습니다.

<?php

$startDate = $_REQUEST["StartDate"];
$endDate = $_REQUEST["EndDate"];

    require_once 'login.php';

    $connection = mysqli_connect(
           $db_hostname, $db_username,
           $db_password, $db_database);



       $sql = "SELECT * FROM PURCHASE WHERE PurchaseDate BETWEEN '%".$startDate."%' and '%".$endDate."%'";
        $result = $connection->query($sql);

    ?>

    Purchases Made Between <?php echo $startDate ?> and <?php echo $endDate ?>
<table border="2" style="width:100%">
    <tr>
                  <th width="15%">Item Name</th>
                  <th width="15%">Item Price</th> 
                  <th width="15%">Purchase Time</th>
                  <th width="15%">Purchase Date</th>
                  <th width="15%">Category</th>
                  <th width="15%">Rating</th>
                </tr>
</table>
     <?php
        if($result->num_rows > 0){
            // output data of each row
            while($rows = $result->fetch_assoc()){ ?>
               <table border="2" style="width:100%">
                <tr>
                    <td width="15%"><?php echo $rows['ItemName']; ?></td>
                    <td width="15%"><?php echo $rows['ItemPrice']; ?></td>
                    <td width="15%"><?php echo $rows['PurchaseTime']; ?></td>
                    <td width="15%"><?php echo $rows['PurchaseDate']; ?></td>
                    <td width="15%"><?php echo $rows['PurchaseCategory']; ?></td>
                    <td width="15%"><?php echo $rows['Rating']; ?></td>
                </tr>
                <?php
            }
        }
        ?>

분명히이 두 출력 페이지로 연결되는 초기 검색 페이지는 조금 더 다르지만 날짜 출력 페이지가 검색 페이지에서 올바른 날짜를 수신하고 있음을 확인할 수 있습니다.

편집 : 여기에 날짜에 대한 검색 페이지가 있습니다.

<!DOCTYPE html>
<html>
<head>
<title>Output 2</title>
</head>
<body>
<h1>Required Output 2</h1>
<h2>Transaction Search By Date</h2>
<br/>
<br/>

<form action="outputout2.php" method="get">
Start Date: <input type="date" name="StartDate">
End Date: <input type="date" name="EndDate">
<input name="Add Merchant" type="submit" value="Search">
</form>;

</body>
</html>
O. 존스

이러한 종류의 문제는 일반적으로 잘못된 형식의 날짜로 인해 발생합니다.

내가 제대로 읽고 있다면 쿼리는 PHP에서 조립을 마치고 SQL 서버로 보낼 때 다음과 같이 말합니다.

 SELECT *
   FROM PURCHASE                   --wrong!
  WHERE PurchaseDate BETWEEN '%5/1/2016%' and '%5/8/2016%'

이것은 작동하지 않을 것입니다.

우선, %기호 LIKE는 평등 및 부등 연산자가 아닌 연산자 와 만 작동합니다 .

또 다른 이유는 데이터베이스 서버 소프트웨어의 제조업체와 모델이 서로 다른 형식의 날짜 문자열을 사용한다는 것입니다. MySQL 및 SQL Server는 2016-05-01. 그러나 사용중인 SQL 소프트웨어 제품의 종류에 따라이를 수행하는 적절한 방법을 찾아야합니다. 이런 종류의 물건은 벤더가 쉽게 휴대 할 수 없습니다.

셋째 : PurchaseDate이러한 종류의 작업을 수행하려면 테이블 열에 날짜와 유사한 데이터 유형이 있어야합니다.

넷째 : PurchaseDate항목이 타임 스탬프 인 경우 (즉, 날짜와 시간이 모두있는 경우) BETWEEN연산자를 안정적으로 사용할 수 없습니다 . 이유는 다음과 같습니다. 2016-05-08 11:50:00종료일 2016-05-08비교할 때 값이 종료일 이후에 있다고 가정합니다 . 그래서, 정말로 필요한 것은 다음과 같습니다.

 WHERE PurchaseDate >= '2016-05-01'
   AND PurchaseDate <  '2016-05-09' -- the day AFTER your end date

이 구조 BETWEEN는 마지막 날의 데이터와 동일하게 수행 되며 망가지지 않습니다.

사용중인 MySQL이되도록 편집하십시오 .

Workbench는 클라이언트 프로그램입니다. PHP도 마찬가지입니다. 서버는 MySQL입니다. 다음과 같은 작업을 할 때

     DateColumn < 'string constant'

MySQL은 암시 적으로 string constant를 날짜 로 변환합니다 . 문자열 상수의 형식이 서버가 의미를 파악할 수 있도록 ISO 8601충분히 가까우면 이를 변환합니다. 2016-12-13정확히 맞습니다. 2016-5-31MySQL에 충분히 가깝고 2016-5-5. 2016/12/31작동하지 않습니다. 어느 쪽도하지 않습니다 5/5/16.

귀하의 질문에 게르만은 이것이다 : MySQL은 %2016-5-5%(퍼센트 기호로) 날짜 로 변환 할 수 없습니다 .

MySQL이 날짜를 변환 할 수 없으면 NULL이 표시됩니다. NULL 값과의 비교는 이상 합니다. 그리고, Hunter S. Thompson의 불멸의 말에서, "가는 것이 이상 해지면, 이상한 턴 프로" . NULL 기이함은 아마도 당신이 보여준 쿼리에서 빈 결과 집합의 근본 원인 일 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

현재 날짜를 기반으로 데이터를 가져 오는 SQL 쿼리

분류에서Dev

데이터를 가져 오는 동안 특정 날짜를 데이터 시간으로 하드 코딩-SQL

분류에서Dev

날짜를 기준으로 일일 데이터를 기반으로 최대 및 최소값 가져 오기

분류에서Dev

최신 날짜를 기준으로 기록 가져 오기

분류에서Dev

날짜를 기준으로 MySQL 데이터베이스에서 데이터 가져 오기

분류에서Dev

Express에서 날짜를 기준으로 mongoDB에서 데이터를 가져 오는 방법.?

분류에서Dev

가장 최근 날짜를 기준으로 데이터 프레임의 전체 행을 가져 오는 방법

분류에서Dev

제목과 날짜를 기준으로 SQLite 행 가져 오기

분류에서Dev

주 번호를 기준으로 날짜 가져 오기 (python)

분류에서Dev

주 번호를 기준으로 날짜 가져 오기 (python)

분류에서Dev

날짜 차이를 기반으로 테이블을 가져 오는 SQl 쿼리

분류에서Dev

변환 오류를 발생시키는 주어진 날짜 범위를 기반으로 SQL에서 데이터 가져 오기

분류에서Dev

MAX 날짜 및 고객 ID를 기반으로 데이터 가져 오기

분류에서Dev

주어진 날짜에 유효한 데이터를 가져 오는 SQL 쿼리

분류에서Dev

Gmail에서 XLS 가져 오기-어제 날짜를 기준으로 한 시트

분류에서Dev

수정 날짜를 기준으로 정렬 된 폴더 목록 가져 오기

분류에서Dev

Google 스프레드 시트 : 날짜를 기준으로 행 가져 오기

분류에서Dev

작업 표 날짜를 기준으로 상태 값 가져 오기

분류에서Dev

선택한 주를 기준으로 두 날짜 범위 사이의 모든 날짜 가져 오기

분류에서Dev

특정 날짜를 기준으로 가능한 모든 날짜 목록 가져 오기 [oracle 11g]

분류에서Dev

열 값을 기반으로 데이터를 가져 오는 SQL 쿼리

분류에서Dev

데이터 통합 : 데이터를 표준 형식으로 가져 오기

분류에서Dev

월 이름을 기준으로 날짜 값 가져 오기

분류에서Dev

월 이름을 기준으로 날짜 값 가져 오기

분류에서Dev

asp.net의 SQL에서 데이터를 검색 할 때 잘못된 날짜 형식 가져 오기

분류에서Dev

SQL 문으로 두 특정 날짜 (사용자 지정) 사이에 DB 테이블에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

날짜 필드를 기반으로 데이터 세트에서 최신 데이터 가져 오기

분류에서Dev

endate와 현재 날짜를 비교하는 데이터 가져 오기

분류에서Dev

현재 날짜에 데이터베이스에서 데이터를 자동으로 가져 오는 방법

Related 관련 기사

  1. 1

    현재 날짜를 기반으로 데이터를 가져 오는 SQL 쿼리

  2. 2

    데이터를 가져 오는 동안 특정 날짜를 데이터 시간으로 하드 코딩-SQL

  3. 3

    날짜를 기준으로 일일 데이터를 기반으로 최대 및 최소값 가져 오기

  4. 4

    최신 날짜를 기준으로 기록 가져 오기

  5. 5

    날짜를 기준으로 MySQL 데이터베이스에서 데이터 가져 오기

  6. 6

    Express에서 날짜를 기준으로 mongoDB에서 데이터를 가져 오는 방법.?

  7. 7

    가장 최근 날짜를 기준으로 데이터 프레임의 전체 행을 가져 오는 방법

  8. 8

    제목과 날짜를 기준으로 SQLite 행 가져 오기

  9. 9

    주 번호를 기준으로 날짜 가져 오기 (python)

  10. 10

    주 번호를 기준으로 날짜 가져 오기 (python)

  11. 11

    날짜 차이를 기반으로 테이블을 가져 오는 SQl 쿼리

  12. 12

    변환 오류를 발생시키는 주어진 날짜 범위를 기반으로 SQL에서 데이터 가져 오기

  13. 13

    MAX 날짜 및 고객 ID를 기반으로 데이터 가져 오기

  14. 14

    주어진 날짜에 유효한 데이터를 가져 오는 SQL 쿼리

  15. 15

    Gmail에서 XLS 가져 오기-어제 날짜를 기준으로 한 시트

  16. 16

    수정 날짜를 기준으로 정렬 된 폴더 목록 가져 오기

  17. 17

    Google 스프레드 시트 : 날짜를 기준으로 행 가져 오기

  18. 18

    작업 표 날짜를 기준으로 상태 값 가져 오기

  19. 19

    선택한 주를 기준으로 두 날짜 범위 사이의 모든 날짜 가져 오기

  20. 20

    특정 날짜를 기준으로 가능한 모든 날짜 목록 가져 오기 [oracle 11g]

  21. 21

    열 값을 기반으로 데이터를 가져 오는 SQL 쿼리

  22. 22

    데이터 통합 : 데이터를 표준 형식으로 가져 오기

  23. 23

    월 이름을 기준으로 날짜 값 가져 오기

  24. 24

    월 이름을 기준으로 날짜 값 가져 오기

  25. 25

    asp.net의 SQL에서 데이터를 검색 할 때 잘못된 날짜 형식 가져 오기

  26. 26

    SQL 문으로 두 특정 날짜 (사용자 지정) 사이에 DB 테이블에서 데이터를 가져 오는 방법은 무엇입니까?

  27. 27

    날짜 필드를 기반으로 데이터 세트에서 최신 데이터 가져 오기

  28. 28

    endate와 현재 날짜를 비교하는 데이터 가져 오기

  29. 29

    현재 날짜에 데이터베이스에서 데이터를 자동으로 가져 오는 방법

뜨겁다태그

보관