2011-07-19 42 views
0

我的數據庫中有一個DATETIME列。我需要得到的價值,並將其分成每3個變量具有年,月,日如何在C#中將DATETIME列值分成日,月和年?

我試圖做

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 /年和時間但我現在怎麼能有3個變量可以存儲一個月,一年在b和一天在另一個變量c?

回答

1
DateTime dt = DateTime.Parse(x); 
int day = dt.Day; 
int month = dt.Month; 
int year = dt.Year; 
+0

這個工作對ME.THANK你們每一個人 – laila

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; 
0
DateTime x; 
foreach(DataRow dd in dataset.Tables["tablename"].Rows) 
{ 
    x = DateTime.Parse(dataset.Tables["tablename"].Rows[0]["date1"].ToString()); 
} 

那麼你並不需要保存3個獨立變量,你必須xDateTime,所以你可以叫x.Yearx.Monthx.Date(如果你願意,仍然可以將其分配到3個不同的變量)

0

我想最好的方法是創建一個SQL查詢,它將爲您獲取所需的日期組件,然後從該查詢中填充數據表,而不是從表本身。

這樣的話,你會順便學習一些SQL日期處理功能... :)

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; 
} 
+0

對不起,應該的發佈前再讀一遍:P –

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 
} 
0

一些選項:

  1. 您可以胸圍它分成它的組成部分在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 
    
  2. 您可以將其轉換爲固定長度ISO 8601串(易於解析,整理正確),再次在SQL中:

    select charDate = convert(char(10),t.some_datetime,126) -- 'yyyy-mm-dd' 
    from dbo.some_table t 
    

    解析出組件是一個簡單的子串操作。

  3. 正如別人指出的:只需選擇日期時間值。 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(); 
         } 
    
        } 
    } 
    
相關問題