Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.NET和SQL Server日期时间问题_C#_Asp.net_Sql Server_Datetime - Fatal编程技术网

C# asp.NET和SQL Server日期时间问题

C# asp.NET和SQL Server日期时间问题,c#,asp.net,sql-server,datetime,C#,Asp.net,Sql Server,Datetime,我很难将日期信息存储到SQL Server的datetime列中 我从用户处获得三列的输入: 创建日期 准备日期 下一个准备日期 我使用calendarextender并将日期格式化为“yyyy/MM/dd”。当所有字段都有日期时,它们存储在数据库中,例如2016年10月16日(dd-MM-yyyy) 在这一点上,我有两个问题: 这些列是可选的,当其中一些列为空时,我的代码不起作用(我假设datetime不能为null)。为了克服这个问题,我使用了下面的代码片段,但仍然不起作用 DateTime

我很难将日期信息存储到SQL Server的datetime列中

我从用户处获得三列的输入:

  • 创建日期
  • 准备日期
  • 下一个准备日期
  • 我使用calendarextender并将日期格式化为“yyyy/MM/dd”。当所有字段都有日期时,它们存储在数据库中,例如2016年10月16日(dd-MM-yyyy)

    在这一点上,我有两个问题:

  • 这些列是可选的,当其中一些列为空时,我的代码不起作用(我假设datetime不能为null)。为了克服这个问题,我使用了下面的代码片段,但仍然不起作用

    DateTime? creationDate= null;
    
    if (creationDateTextbox.Text != null && creationDateTextbox.Text != "")
    {
        creationDate= Convert.ToDateTime(creationDateTextbox.Text);
    }
    
  • 当我从DB获取日期时,它们显示为2016年10月16日(MM dd yyyy),这与我格式化日期的方式不同。我想以用户输入的格式显示它


  • 日期时间没有任何可以格式化为字符串的格式,假设您的日期时间类型数据库字段
    dt
    ,其中包含日期
    10/16/2016(MM dd yyyy)
    ,则您可以将其转换

    string s = dt.ToString("yyyy/MM/dd");
    

    日期时间没有任何可以格式化为字符串的格式,假设您的日期时间类型数据库字段
    dt
    ,其中包含日期
    10/16/2016(MM dd yyyy)
    ,则您可以将其转换

    string s = dt.ToString("yyyy/MM/dd");
    

    日期存储在数据库中时没有格式。实际上,它通常只是一个非常大的
    long
    ,用于计算从设定的开始日期算起的毫秒数


    如果要存储格式,则需要停止将其存储为日期,而只将文本视为数据库中的文本,但是如果这样做,则无法获得按日期范围排序或筛选的优势,因为它只会被视为文本。

    日期在数据库中存储时没有格式。实际上,它通常只是一个非常大的
    long
    ,用于计算从设定的开始日期算起的毫秒数


    如果要存储格式,则需要停止将其存储为日期,而只将文本视为数据库中的文本,但是如果这样做,则无法获得按日期范围排序或筛选的优势,因为它将仅被视为文本。

    您的一个问题的答案如下: 您可以使用数据注释来格式化从SQL数据库获取的日期。我假设您正在使用EF6;如果没有,您可以在SSMS中将字段更改为varchar,并将日期存储为字符串


    第二,我不清楚,但是如果您希望SQL DB列是可选的,您可以使用可选的数据注释来实现这一点。

    您的一个问题的答案如下: 您可以使用数据注释来格式化从SQL数据库获取的日期。我假设您正在使用EF6;如果没有,您可以在SSMS中将字段更改为varchar,并将日期存储为字符串


    第二,我不清楚,但是如果您希望SQL DB列是可选的,那么可以使用可选的数据注释。

    if(creationDateTextbox.Text!=null&&creationDateTextbox.Text!=”)
    可以简化为
    if(String.IsNullOrEmpty(creationDateTextbox.Text)
    当有疑问时,将其存储为刻度或dbI中最小的整数完整时间。我解决了第一个问题。我在存储数据时使用calendarextender将其格式化为MM dd yyyy,现在从DB获取数据时,它给出了相同的格式。但是,第二个问题仍然存在。如果其中一个日期不正确,我无法运行代码由用户选择。
    if(creationDateTextbox.Text!=null&&creationDateTextbox.Text!=“”)
    可以简化为
    if(String.IsNullOrEmpty(creationDateTextbox.Text)
    当有疑问时,将其存储为刻度或dbI中最小的整数完整时间。我解决了第一个问题。我在存储数据时使用calendarextender将其格式化为MM dd yyyy,现在从DB获取数据时,它给出了相同的格式。但是,第二个问题仍然存在。如果其中一个日期不正确,我无法运行代码由用户选择。如果用户没有为其中一个日期字段选择日期,则我的整个代码不起作用(因为我假设在SQL Server中datetime不能为空)。据我所知,您可以在SQL Server中使任何字段为空。您也可以在EF6中这样做。我敢打赌您的.NET应用程序正在运行,而不是SQL事务。您是否有错误消息,并且是否使用断点查找应用程序失败的代码行?我对其进行了测试,空日期字段是问题所在。不知怎的,SQL Server没有接受t null datetime列。如果用户没有为其中一个日期字段选择日期,则我的整个代码不起作用(因为我假设datetime在SQL Server中不能为空)。据我所知,您可以在SQL Server中使任何字段为空。您也可以在EF6中这样做。我敢打赌您的.NET应用程序正在运行,而不是SQL事务。您是否有错误消息,并且是否使用断点查找应用程序失败的代码行?我对其进行了测试,空日期字段是问题所在。不知怎的,SQL Server没有接受t空日期时间列。