2016-10-07 2 views
1
OS
  • : 리눅스 (루 분투)
  • 언어 : 자바 스크립트 (노드 JS)
  • 프레임 워크 : 명시 JS
  • 데이터베이스 : MySQL은
  • "데이터"날짜 필드에서입니다 " activitat "테이블

나는 sequelize 경우 날짜 절

models.TblActivitat.findAll(
       { 
        attributes: 
        [ 
         'codiAct', 'procedencia', 'pacient', 'proces', 'prova', 'rmn', 'realitzador', 
         [Sequelize.fn('date_format', Sequelize.col('data'), '%d-%m-%Y'), 'data'] 
        ], 
        include: models.TblTecnics, 
        where: {"data": '2016-10-20' }, //dataAAAAMMDD 
        order: "registre DESC" 
       }).then(function(tblActTec){ 
        ... 
       }); 
Sequelize.js

을 사용하여 다음 문을 실행하면

... 난 일부 레코드를 얻을 수있는 것,하지만 난 결과를 얻을

이 MySQL을 실행 아무것도 얻을 : 여기서 데이터 = '2016년 10월 20일'activitat에서
MySQL의>를 선택 데이터를
;
+ ------------ +
| 데이터 |
+ ------------ +
| 2016-10-20 |
| 2016-10-20 |
| 2016-10-20 |
| 2016-10-20 |
+ ------------ +

노드 서버의 콘솔을 볼 수 있습니다. 이전에 satement가 실행되면 다음과 같이 표시됩니다.

Executing (기본값) : SELECT activitat. codiActactivitat. procedencia, activitat. pacient, activitat. proces, activitat. prova, activitat. rmn, activitat. realitzador, date_format (data, '% d- % m- % Y') AS data, tecniccodiTecAS tecnic.codiTec, tecnic. nom AS tecnic.nom FR activitat AS activitat LEFT OUTER JOIN tecnics AS tecnic ON activitat. realitzador = tecnic. codiTec WHERE activitat. data = '2016-10-19 22:00:00'
ORDER BY registre DESC;

내 질문 :
where 절로 "2016-10-20"이라고 썼습니다. 내가 mysql에서 그것을 할 때 내가 원하는 결과를 보여 주지만 sequelize가 실행될 때 "2016-10-19 22:00:00"("2016-10-20 00 : 00:00 "!!). 왜?

나는 당신을 remeber "데이터"필드가 날짜 필드 (안 날짜 시간 필드)

아주 대단히 감사합니다입니다!

답변

1

을 필드 유형을 정의하십시오. 이것은 DATAONLY 유형 (DATA 유형 대신)입니다. 그래서, 필드 정의는 다음과 같이 다음 : 그것은 단지 드 날짜 부분 (안 시간 부분을) 생각이 파일 형식 (DATAONLY)와

 data: 
     { 
      type: DataTypes.DATEONLY, 
      validate: 
      { 
       notEmpty: 
       { 
        msg: "-> Falta data" 
       } 
      } 
     }, 

2

Sequelize는 전달한 문자열을 시간이 할당 된 Date 객체로 변환합니다.당신이 (오히려 정확한 시간보다) 특정 날짜에 레코드를 선택하려면이 같은 수행 할 수

date: { 
    $lt: new Date('2016-10-20'), 
    $gt: new Date(new Date('2016-10-20') - 24 * 60 * 60 * 1000) 
} 

또는 귀하의 경우 : 나는 새를 발견 한

models.TblActivitat.findAll(
      { 
       attributes: 
       [ 
        'codiAct', 'procedencia', 'pacient', 'proces', 'prova', 'rmn', 'realitzador', 
        [Sequelize.fn('date_format', Sequelize.col('data'), '%d-%m-%Y'), 'data'] 
       ], 
       include: models.TblTecnics, 
       where: {"data": { 
        $lt: new Date('2016-10-20'), 
        $gt: new Date(new Date('2016-10-20') - 24 * 60 * 60 * 1000) 
       } }, //dataAAAAMMDD 
       order: "registre DESC" 
      }).then(function(tblActTec){ 
       ... 
      });