2016-05-26 11 views
1

Ich versuche, TVP mit langweilig zu verwenden und erhalten diesen Fehler bei der Verwendung eines DateTime Parameters.Mühsame SQL Server TVP: parameter.value.getTime ist keine Funktion für datetime

Die Ausnahme, während die Anfrage Aufbau ist:

days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime())/
(1000 * 60 * 60 * 24)); 
              ^

Ausnahme:

TypeError: parameter.value.getTime is not a function

Der Code wie diese für die Datentypen bei der mühsamen Code Suche

/*declare table*/``  
let table = { 
     columns: [ 
      { name: 'a', type: TYPES.VarChar, length: 50, nullable: true }, 
      { name: 'b', type: TYPES.Int}, 
      { name: 'c', type: TYPES.DateTime} 

     ], 
     rows: [ 
      ['hello tvp', 777,'05/08/07 12:35 PM'], 
      ['OLO', 45,'05/08/16 1:30 AM'] 
     ] 
    }; 

/*request code*/ 
var request = new Request("MyCustomStoredProcedure", function (err, rowCount) { 
        if (!err) { 
         callback(err) 
         logger.info("rowCount", rowCount) 
        } else { 
         callback(rowCount) 
         logger.error("Error => ", err) 
        } 
       }); 
       request.addParameter('tvp', TYPES.TVP, table); 

       request.on('row', function (columns) { 
        logger.info("data", columns) 
       }); 

       connection.callProcedure(request); 



CREATE TYPE TestType AS TABLE (a VARCHAR(50), b INT, c DateTime); 

CREATE PROCEDURE MyCustomStoredProcedure 
    (@tvp TestType readonly) 
AS 
    SELECT * 
    FROM @tvp 

aussieht. js Ich fand, dass die parameter.value eine Zeichenfolge und kein Objekt war.

Nicht sicher, was mache ich hier falsch.

Was habe ich versucht,

  • ohne datetime - arbeitet
  • mit DateTime2 - die eingehenden tabellarische Datenstrom (TDS) Remote Procedure Call (RPC) Protokollstrom nicht korrekt ist. Parameter 2 (""): Datentyp 0x03 ist unbekannt.
  • Mit https://github.com/patriksimek/node-mssql, aber intern wieder verwendet Tedious
+0

1. Also nur das erste Bit schlägt fehl? Ich sehe nicht die erste Menge Code im zweiten Bit, also was schauen wir uns an? 2. Verwenden Sie ISO-8601 Datumsformate: "05/08/16 1:30 AM" ist nicht ISO-8601 und ist bestenfalls mehrdeutig, im schlimmsten Fall verursacht es einen Fehler – gbn

Antwort

1

I verwendet Varchar, statt Datetime, und es mein Problem gelöst. Ich verstehe, dass es nicht die beste Lösung ist, aber im Interesse der Zeit habe ich es genommen.

0

Ihr Datumsformat hat Probleme. javascript's datetime hat ein Zeitzonenelement SQL datetime hat keine Zeitzone.

Versuchen

['hello tvp', 777,new Date('05/08/07 12:35 PM')] 

ich das gleiche Problem in der Zeitzone Zugabe begegnet sie verrechnet.