将日期时间保存在 sql table

Save datetime in sql table

如何在查询中插入这样的日期? 2015-06-02T11:18:25.000

我试过这个:

INSERT INTO TABLE (FIELD) VALUES (convert(datetime,'2015-06-02T11:18:25.000'))

但是我已经返回了:

Conversion failed when converting date and/or time from character string.

我也试过:

CONVERT(DATETIME, '2015-06-02T11:18:25.000', 126)

但它不起作用:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

整个查询是:

INSERT INTO BOLLE_TEST_POPPER (QIDDIADE,QNUMBOLLA,QSELEZIONALE,QDATA,QORA,QPRIMAPESATA,QSECONDAPESATA,QIMP1,QIMP2,QIDCAUSALE,QIDCLIENTE,QIDDESTINAZIONE,QIDVETTORE,QIDSUBVETTORE,QIDCAMION,QORATRASITO,QNUMBOLLAINGRESSO,QDATABOLLAINGRESSO,QCOMMITTENTIDELTRASPORTO,QANNOTAZIONI,QANNOTAZIONIINBOLLA,QIDARTICOLO,QQANTITA,QIDAUTISTA,QNUMTESSERA,QNUMGETTONE,VALORETAB1,VALORETAB2,VALORETAB3,VALORETAB4,VALORETAB5,VALORETAB6,VALORETAB7,VALORETAB8,VALORETAB9,VALORETAB10,VALORETESTO1,VALORETESTO2,VALORETESTO3,VALORETESTO4,VALORETESTO5,VALORETESTO6,VALORETESTO7,VALORETESTO8,VALORETESTO9,VALORETESTO10) VALUES ('4','5234','-',
convert(datetime,'2015-06-02'),convert(datetime,'2015-06-02T11:18:25.000',126),'30020','20230','null','null','4','1','391','50','50','50','500',convert(datetime,'2015-06-02T11:14:06+02:00',126),'-','false','-','-','19','9790.00','1','BK994P','-','-','null','null','null','null','null','null','null','null','null','-','-','-','-','-','-','-','-','-','-');

怎么了?

试试这个:

INSERT INTO TABLE (FIELD) VALUES CONVERT(DATETIME, '2015-06-02T11:18:25.000', 126)

126与ISO8601相关,即yyyy-mm-ddThh:mi:ss.mmm格式。

这与字符串 '2015-06-02T11:18:25.000' 的格式相同。

有关详细信息,请参阅 here

对于具有 datetimeoffset 的日期(例如 '2015-06-02T11:14:06+02:00' - 请注意末尾的 +02:00),您必须这样做:

CONVERT(DATETIME, CONVERT(DATETIMEOFFSET,'2015-06-02T11:14:06+02:00'), 127)

完全固定的查询应该是:

INSERT INTO BOLLE_TEST_POPPER (QIDDIADE,QNUMBOLLA,QSELEZIONALE,QDATA,QORA,QPRIMAPESATA,QSECONDAPESATA,QIMP1,QIMP2,QIDCAUSALE,QIDCLIENTE,QIDDESTINAZIONE,QIDVETTORE,QIDSUBVETTORE,QIDCAMION,QORATRASITO,QNUMBOLLAINGRESSO,QDATABOLLAINGRESSO,QCOMMITTENTIDELTRASPORTO,QANNOTAZIONI,QANNOTAZIONIINBOLLA,QIDARTICOLO,QQANTITA,QIDAUTISTA,QNUMTESSERA,QNUMGETTONE,VALORETAB1,VALORETAB2,VALORETAB3,VALORETAB4,VALORETAB5,VALORETAB6,VALORETAB7,VALORETAB8,VALORETAB9,VALORETAB10,VALORETESTO1,VALORETESTO2,VALORETESTO3,VALORETESTO4,VALORETESTO5,VALORETESTO6,VALORETESTO7,VALORETESTO8,VALORETESTO9,VALORETESTO10) VALUES ('4','5234','-',
convert(datetime,'2015-06-02'),convert(datetime,'2015-06-02T11:18:25.000',126),'30020','20230','null','null','4','1','391','50','50','50','500',CONVERT(DATETIME, CONVERT(DATETIMEOFFSET,'2015-06-02T11:14:06+02:00'), 127),'-','false','-','-','19','9790.00','1','BK994P','-','-','null','null','null','null','null','null','null','null','null','-','-','-','-','-','-','-','-','-','-');

你需要一种格式。在本例中,126:

INSERT INTO TABLE (FIELD)
    VALUES (convert(datetime,'2015-06-02T11:18:25.000', 126))

列表是here

对于时区,您需要 127,因此您需要修复 values 子句:

('4','5234','-',
    convert(datetime,'2015-06-02'),convert(datetime,'2015-06-02T11:18:25.000',127),'30020','20230','null','null','4','1','391','50','50','50','500',convert(datetime,'2015-06-02T11:14:06+02:00',127),'-','false','-','-','19','9790.00','1','BK994P','-','-','null','null','null','null','null','null','null','null','null','-','-','-','-','-','-','-','-','-','-');

试试这个。它对我有用。

  if(isset($_POST['buttonsave']))
    {
        $vfidperiodo      = preg_replace('#[^A-Za-z0-9]#i','',$_POST['idperiodo']);
        $vfperiodo        =  ms_escape_string($_POST['periodo']);
        $vffechainicio    =  $_POST['fecha_inicio'];



        $query_in="INSERT INTO iperiodos (idperiodo, periodo, fecha_inicio)
            VALUES ('".$vfidperiodo."','".$vfperiodo."','".$vffechainicio."')";


        $sql_in = sqlsrv_query($conn,$query_in);
       if ($sql_in) // Se eejectuto la sentencia SQL?
                  {
          echo "SQLSuccess"; // Mensaje Afirmativo.
                  } else {
         die( print_r( sqlsrv_errors(), true)); // Causa del error.       
                  }
         exit();
    }

这是数据库和表单图像。