将日期转换为日期时间格式c#

时间:2018-02-02 08:35:21

标签: c# datetime

我有转换日期时间的问题,我看不出我犯了什么错误。 我认为它应该是某个地方,以确定相同的SQL查询识别日期 这是我设置断点时得到的结果 enter image description here 这是基础

的结果

enter image description here

这是我发送数据的代码

var arravialDates = dataAccess.get_dates(userID, date, DateTime.DaysInMonth(date.Year, date.Month)); //get dates for user

//working hours

DateTime dateH = new DateTime(2099, 12, 12, 0, 0, 0);
bool hasDate = false;
for (int i = 0; i < arravialDates.Count; i++)
{
     var arravial = dataAccess.getPraesenzzeit(arravialDates[i], userID);
     int index = 0;
}

2 个答案:

答案 0 :(得分:5)

您的屏幕截图显示了.Query<>方法。 SqlConnection没有Query方法。

Dapper,microORM用于编写参数化查询更容易。使用Dapper或任何其他ORM时,需要字符串插值或连接。只需写下:

var output=connection.Query<PRAESENZZEIT>(
                "select * from Z_PRAESENZZEIT " + 
                "where ZPZ_Datum = @date and ZPZ_LPE_ID= @id "
                "order by ZPZ_ID_ASC", 
                new {date=DatTime.Today,id=1});

更好的是:

var query = "select * from Z_PRAESENZZEIT " + 
            "where ZPZ_Datum = @date and ZPZ_LPE_ID= @id "
            "order by ZPZ_ID_ASC", 

var output=connection.Query<PRAESENZZEIT>(query,new {date=date,id=userid});

答案 1 :(得分:3)

你的方法错了。您永远不应该通过字符串连接创建SQL语句。您很容易使用SQL注入,您将遇到不同系统上的格式问题,并且您将对查询解析器的性能产生很大影响。

解决方案是使用参数化查询:为参数添加占位符并通过命令参数添加值。

您的SQL应该看起来像where ZPZ_Datum = @zpzdate,然后添加名为zpzdate的参数:command.Parameters.Add("@zpzdate", arravial);