c# - 使用 SQL 查询将 DateTime 格式转换为 MMMM yyyy、dd
问题描述
我正在尝试将日期格式更改为 MM:yyyy:dd(2018 年 10 月 24 日),我已经尝试了所有我知道的方法,但它不起作用......这是我的代码(我上网的许多方法之一) :
DataTable dt = new DataTable();
SQLDataManager sql = new SQLDataManager(false);
string query = "SELECT * FROM member_case_management where panumber like '%'+ @value +'%'";
sql.AddParamAndValue("@value", searchvalue);
dt = sql.GetDataset(query, CommandType.Text).Tables[0];
var response = (from r in dt.AsEnumerable()
select new { a = r.Field<string>("a"),
b = r.Field<DateTime>("b").ToString("MMMM yyyy, dd") }
).ToList();
return dt;
查询将获取数据库中的所有数据,但我希望日期以 MMMM yyyy, dd 表示,但得到的结果是
panumber: 213456
admissiondate: 6/21/2018 4:40:15 PM
enrolleefeedback: satisfactory
enrolleestatus: treatment satisfactory
statusdetails: planned discharge
dischargedate: 6/21/2018 4:40:15 PM
totaladmissiondays: 83days
txndate: 6/21/2018 4:40:15 PM
insuredid: 3431528465
comments: satisfactory
解决方案
您可以使用FORMAT
自定义日期时间的输出:
SELECT FORMAT(GETDATE(), 'MMMM yyyy, dd')
-- Returns: October 2018, 25
请参阅:https ://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017
您没有提到查询中的列是源日期。假设该列被命名为“DateColumn”,您可以像这样调整您的查询:
string query = "SELECT *, FORMAT(DateColumn, 'MMMM:yyyy:dd') AS FormattedDate FROM member_case_management where panumber like '%'+ @value +'%'";
性能更新
正如评论中提到的,对于大型结果集,FORMAT
可能会非常慢。如果这确实影响了您,这里有一个更手动的方法(再次假设“DateColumn”作为您的列的名称):
SELECT DATENAME(MONTH, DateColumn) + ' '
+ CONVERT(CHAR(4), YEAR(DateColumn)) + ', '
+ RIGHT('00' + CONVERT(VARCHAR(2), DAY(DateColumn)), 2) AS Formatted
我刚刚对刚刚超过 4MM 的记录进行了快速的性能比较,这比FORMAT
同等记录快了大约 93%。
推荐阅读
- git - git 致命错误:不支持的 SSL 后端“通道”
- c# - 为从外部源(Web API)获取 JWT(令牌)的 ASP.NET Core 3.1 Web 应用程序实施用户授权
- kubernetes - Kubernetes Ingress 不清理路径
- python - PyBytes_FromString 返回一个 None 对象
- python - Python 正则表达式搜索以子字符串中某些字符开头的行
- python - SQLAlchemy:如何使用 timedelta 处理月份间隔
- r - 在 R 中打开 .7z 文件
- discord - 我的 discord bot 命令不起作用,但它在 cmd 中有效
- artifactory - 无法转换工件 url
到 repo 的原始远程 url: 包裹: - laravel - JavaScript 中的 Laravel 吐司