我正在尝试将日期格式更改为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
答案 0 :(得分:1)
您可以使用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
我只是对4毫米以上的记录进行了快速性能比较,其执行速度比FORMAT
快了93%。
答案 1 :(得分:0)
1)您的函数返回dt
。
public DataTable YourMethodName()
{
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];
return dt;
}
2)然后,您可以访问dt
并将所有date
列设置为所需的格式,例如。
DataTable dt = YourMethodName();
var response = (from r in dt.AsEnumerable()
select new
{
panumber = r.Field<int>("panumber"),
//Do this for all remaing columns
admissiondate = r.Field<DateTime?>("admissiondate")?.ToString("MMMM yyyy, dd"),
dischargedate = r.Field<DateTime?>("dischargedate")?.ToString("MMMM yyyy, dd"),
txndate = r.Field<DateTime?>("txndate")?.ToString("MMMM yyyy, dd"),
//Do this for all remaing columns
comments = r.Field<string>("comments")
}
).ToList();
3)您可以像上面的response
那样使用DataSource
以上的
Grid1.DataSource = response.ToList();
Grid1.DataBind();