Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 仅使用日期时间格式比较日和显示小时_C#_Asp.net - Fatal编程技术网

C# 仅使用日期时间格式比较日和显示小时

C# 仅使用日期时间格式比较日和显示小时,c#,asp.net,C#,Asp.net,我的SQL数据库中有一个DateTime列,如何检查该列中的日期是今天还是昨天 我想说的是:如果日期是今天,那么结果就是 今天与昨天相同。在.NET端,您可以检查今天的日期: if (testDate.Date == DateTime.Today) { ... } 设置为今天日期的对象,时间组件设置为00:00:00 然后,您可以使用: if (testDate.Date == DateTime.Today.AddDays(-1)) { ... } 以测试昨天的日期 已定义运

我的SQL数据库中有一个DateTime列,如何检查该列中的日期是今天还是昨天

我想说的是:如果日期是今天,那么结果就是
今天与昨天相同。

在.NET端,您可以检查今天的日期:

if (testDate.Date == DateTime.Today)
{
    ...
}
设置为今天日期的对象,时间组件设置为00:00:00

然后,您可以使用:

if (testDate.Date == DateTime.Today.AddDays(-1))
{
    ...
}
以测试昨天的日期

已定义运算符。

MySQL

今天:

昨天:

DATE(DateColumn) = CURDATE() - INTERVAL 1 DAY C


它是内联的。dt是您的变量,在Sql中键入-DateTime

,您可以执行以下操作: 选择案例 当DateDiffdd、Created\u Date、getdate=0时 然后 “今天在:”+CONVERTVARCHAR20,创建日期 当DateDiffdd、Created\u Date、getdate=1时 然后 “昨天在:”+CONVERTVARCHAR20,创建日期 终止
从tableName中,您可以使用SQL来执行此操作

Create Table #t
(
DateCol datetime
)

insert Into #t
values (getdate())

insert Into #t
values (getdate()-1)

insert Into #t
values (getdate()-2)

Select Case When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()as float)) as DateTime) Then
        'Today, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
        When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()-1 as float)) as DateTime) Then
        'Yesterday, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
        else 'More than one day old' End

From #t

drop table #t
啊,我现在看到您希望通过LINQ在.NET中完成


不管怎样,我还是把这个放在这里-有人可能会发现它很有用

有很多特殊情况,所以我认为应该将它封装在一个方法中,如下所示:

public static string GetDateDescription(DateTime date)
{
  Calendar calendar = CultureInfo.CurrentCulture.Calendar;

  if (date.Date == DateTime.Today)
    return "Today";

  if (date.Date == DateTime.Today.AddDays(1))
    return "Tommorow";

  if (date.Date == DateTime.Today.AddDays(-1))
    return "Yesterday";

  if (date.Date == DateTime.Today.AddDays(2))
    return "The day after tommorow (dress warm)";

  int dateWeek = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
  int todayWeek = calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

  if (dateWeek == todayWeek)
    return "This week ...";

  if (dateWeek - todayWeek == 1)
    return "Next week ...";

  if (dateWeek - todayWeek == -1)
    return "Previous week ...";

  if (date.Month == DateTime.Today.Month)
    return "This month ...";

  if (date.Month - DateTime.Today.Month == 1)
    return "Next month ...";

  if (date.Month - DateTime.Today.Month == -1)
    return "Last month ...";

  if (date.Month - DateTime.Today.Month > 1)
    return "Far, far away...";

  if (date.Month - DateTime.Today.Month < -1)
    return "Long time ago...";

  return date.ToShortDateString();
}


如果可能的话,我需要在LINQ查询中内联检查它。我在LINQ查询中,得到的结果类似于p.CreationDate,它没有.Date属性。。。有什么想法吗?@Vitor-p.CreationDate是什么类型的?@Vitor-啊,那么这段代码不会有帮助,因为它使用的是.NET类型。很抱歉除非您将SQL DateTime转换为.NET DateTime?属性.Days不存在这很奇怪.NET framework的版本是什么?确保dt变量是DateTime,而不是TimeSpan。
DateTime.Now.Subtract(dt).Days == 0 ? "Today" : "Yesterday"
Create Table #t
(
DateCol datetime
)

insert Into #t
values (getdate())

insert Into #t
values (getdate()-1)

insert Into #t
values (getdate()-2)

Select Case When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()as float)) as DateTime) Then
        'Today, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
        When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()-1 as float)) as DateTime) Then
        'Yesterday, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
        else 'More than one day old' End

From #t

drop table #t
public static string GetDateDescription(DateTime date)
{
  Calendar calendar = CultureInfo.CurrentCulture.Calendar;

  if (date.Date == DateTime.Today)
    return "Today";

  if (date.Date == DateTime.Today.AddDays(1))
    return "Tommorow";

  if (date.Date == DateTime.Today.AddDays(-1))
    return "Yesterday";

  if (date.Date == DateTime.Today.AddDays(2))
    return "The day after tommorow (dress warm)";

  int dateWeek = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
  int todayWeek = calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

  if (dateWeek == todayWeek)
    return "This week ...";

  if (dateWeek - todayWeek == 1)
    return "Next week ...";

  if (dateWeek - todayWeek == -1)
    return "Previous week ...";

  if (date.Month == DateTime.Today.Month)
    return "This month ...";

  if (date.Month - DateTime.Today.Month == 1)
    return "Next month ...";

  if (date.Month - DateTime.Today.Month == -1)
    return "Last month ...";

  if (date.Month - DateTime.Today.Month > 1)
    return "Far, far away...";

  if (date.Month - DateTime.Today.Month < -1)
    return "Long time ago...";

  return date.ToShortDateString();
}
DateTime start = DateTime.Now.Date.AddDays(-60);
DateTime end = DateTime.Now.Date.AddDays(+60);

for (DateTime current = start; current < end; current = current.AddDays(1))
{
  Console.WriteLine("{0} --> {1}",
     current.ToShortDateString(), GetDateDescription(current));
}
DateTime date=(DateTime) p.CreatedDate;
DateTime date = Convert.ToDateTime(p.CreatedDate);