如何在C#中将DATETIME列值划分为天、月和年
本文关键字:划分 中将 DATETIME | 更新日期: 2023-09-27 18:02:29
我的数据库中有一个DATETIME
列。我需要得到这个值,并将其划分为3个变量,每个变量都有年份、月份和日期
我正在试着做
dataadapter.Fill(dataset, "tablename");
string x;
foreach(DataRow dd in dataset.Tables["tablename"].Rows)
{
x = dataset.Tables["tablename"].Rows[0]["date1"].ToString();
}
这里x是m/dd/yr和时间的总和,但我现在怎么能有3个变量,可以将月份存储在a中,将年份存储在b中,将日期存储在另一个变量c中?
这个怎么样。
int year, month, day;
DateTime all;
if(DateTime.TryParse(dataset.Tables["tablename"].Rows[0]["date1"], out all)
{
year = all.Year;
month = all.Month;
day = all.Day;
}
foreach(DataRow dd in dataset.Tables["tablename"].Rows)
{
var date = DateTime.Parse(dd["date1"].ToString());
int day = date.Day;
int month = date.Month;
int year = date.Year;
// Do something with it
}
DateTime dt = DateTime.Parse(x);
int day = dt.Day;
int month = dt.Month;
int year = dt.Year;
DateTime x;
foreach(DataRow dd in dataset.Tables["tablename"].Rows)
{
x = DateTime.Parse(dataset.Tables["tablename"].Rows[0]["date1"].ToString());
}
然后,您不需要保留3个单独的变量,您将把x
作为DateTime
,这样您就可以调用x.Year
、x.Month
、x.Date
(如果需要,您仍然可以将其分配给3个不同的变量(
我想最好的方法是创建一个SQL查询,为您获取所需的日期组件,然后从该查询而不是从表本身填充数据表。
这样,您将通过以下方式学习一些SQL日期处理函数…:(
数据库中字段的数据类型是什么?
如果您的数据库字段是一个字符串,那么您必须对其进行解析,否则您可以将其强制转换为DateTime
:
// Parse it (be careful, could throw an exception)
DateTime date = DateTime.Parse(dataset.Tables["tablename"].Rows[0]["date1"].ToString());
// Or cast it:
DateTime date = (DateTime)dataset.Tables["tablename"].Rows[0]["date1"];
// Then pull out the values you wish to use from the date object
int months = date.Month;
int day = date.Day;
int year = date.Year;
一些选项:
您可以在SQL:中将其分解为多个组成部分
select yyyy = year( t.some_datetime ) , -- integer year mm = month( t.some_datetime ) , -- integer month (1-12) dd = day( t.some_datetime ) , -- integer day (1-31) from dbo.some_table t
您可以将其转换为固定长度的ISO8601字符串(易于解析,整理正确(,同样使用SQL:
select charDate = convert(char(10),t.some_datetime,126) -- 'yyyy-mm-dd' from dbo.some_table t
解析组件是一个简单的子字符串操作。
正如其他人所指出的:只需选择日期时间值。ADO。Net将其映射到CCD_ 8。
using System; using System.Data; using System.Data.SqlClient; namespace ConsoleApplication4 { class Program { static void Main( string[] args ) { string myConnectString = GetConnectionString() ; // your connect string here! using ( SqlConnection dbConnection = new SqlConnection( myConnectString ) ) using ( SqlCommand sql = dbConnection.CreateCommand() ) { sql.CommandType = CommandType.Text ; sql.CommandText = @" select t.some_datetime from dbo.some_table t " ; dbConnection.Open() ; using ( SqlDataReader reader = sql.ExecuteReader() ) { while ( reader.Read() ) { DateTime someDateTime = reader.GetDateTime(0) ; process( someDateTime.Year , someDateTime.Month , someDateTime.Day ) ; } } dbConnection.Close() ; } return ; } private static void process( int p , int p_2 , int p_3 ) { throw new NotImplementedException(); } } }