我的数据库中有一个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中?
答案 0 :(得分:4)
这个怎么样。
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;
}
答案 1 :(得分:2)
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
}
答案 2 :(得分:1)
DateTime dt = DateTime.Parse(x);
int day = dt.Day;
int month = dt.Month;
int year = dt.Year;
答案 3 :(得分:0)
数据库中该字段的数据类型是什么?
如果您的数据库字段是字符串,那么您将不得不解析它,否则您只需将其转换为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;
答案 4 :(得分:0)
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
,{{ 1}}(如果需要,你仍然可以将它分配给3个不同的变量)
答案 5 :(得分:0)
我想最好的方法是创建一个SQL查询,为您获取所需的日期组件,然后从该查询中填充数据表,而不是从表本身填充。
通过这种方式,您将学习一些SQL日期处理函数......:)
答案 6 :(得分:0)
一些选项:
您可以将其扩展到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
您可以在SQL中将其转换为固定长度的ISO 8601字符串(易于解析,正确整理):
select charDate = convert(char(10),t.some_datetime,126) -- 'yyyy-mm-dd'
from dbo.some_table t
解析组件是一个简单的子串操作。
正如其他人所说:只需选择日期时间值即可。 ADO.Net将其映射到System.DateTime
。
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();
}
}
}