【问题标题】:How to reformat Datetime when retrieving it from database using linq使用linq从数据库中检索日期时间时如何重新格式化日期时间
【发布时间】:2018-01-26 10:07:11
【问题描述】:

我将Datetime 值插入到具有以下格式的 SQL Server 数据库中:dd-MM-yy HH:mm。如果我将01-01-18 15:30 插入数据库并执行命令

select datetimeColumn from mytable

我回复2018-01-01 15:30:00.000。但是,如果我检索包含日期时间类型列的表的所有记录,例如

meetings = meetings.Where(m => m.meeting_name.ToLower().Contains(searchString.ToLower()));

datetime 值变成01-Jan-18 3:30:00 PM

如何保持日期时间格式与我插入的格式相同?

【问题讨论】:

  • DateTime 没有格式。您必须在显示时按照您想要的方式对其进行格式化。
  • @ Gert Arnold:我如何使用 linq 做到这一点?
  • @user2905416 这与 LINQ 无关;这与您的 UI 代码有关。那么:你在哪里显示它? 是您需要更改的代码。同样:日期时间 没有格式 - 在 C# 或数据库中;这是一个纯粹的数字。当我们开始讨论在 UI 中显示它时,它只有一种格式
  • @Gert Arnold, Marc Gravell:知道了,谢谢你们......!

标签: c# sql-server linq datetime


【解决方案1】:

SQL Server 将数据存储为两个intergers,第一个为日期保留,第二个为时间保留。

meetings = meetings.Where(m => m.meeting_name.ToLower().Contains(searchString.ToLower()));

因此,通过查询,您只需按原样阅读date-time!您需要做的就是将日期时间格式化为您想要的字符串格式,例如:

var dateTime = DateTime.Now;
var dateTimeFormmated = dateTime.ToString("yyyy-MM-dd hh:mm:ss.ffff");
// 2018-01-26 05:52:54.3250

【讨论】:

    【解决方案2】:

    SQL Server 将数据存储为一个或多个整数,具体取决于数据类型。数字是存储的,而不是格式化的字符串。这同样适用于日期时间/时间戳数据库类型的其他数据库提供程序。

    例如 DATETIME 数据类型。根据 SQL Server 文档,数据库引擎将 DATETIME 值存储为两个整数。第一个整数代表日期,第二个整数代表时间。日期范围为 1753 年 1 月 1 日至 9999 年 12 月 31 日,时间范围为 00:00:00.000 至 23:59:59.997,默认值为 1900-01-01 00:00:00.000。

    您在 sql management studio 或任何应用程序中看到的格式化字符串表示是由为您显示 sql 查询结果的应用程序完成的。这意味着支持不同日期/时间格式的负担在于执行 sql 命令的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多