2013-01-19 46 views
-1

我想在生日列在我的數據庫拆分..分割字符串從SQL Server

Returned String from database : dd/mm/yyyy 

我想在一個單獨的琴絃每個值,

date = dd 
month = mm 
year = yyyy 

我試過的東西像這樣..但這不總是工作,因爲某些日期只有一個字符?恩。 2012年4月4日

Birthdate.ToString.Substring(0, 2) 
+0

生日是'字符串'嗎?如果它是'String',則不要在其上調用'ToString'。如果它是'日期',則改爲使用其'Day'屬性! – Ryan

回答

2

或者,你可以不將字符串從數據庫返回到日期嗎?您可以通過使用Date.Month隨後訪問的每個組成部分,等

Dim mydate As Date = Convert.ToDateTime("21/05/2012") 

Console.WriteLine(mydate.Day) 
Console.WriteLine(mydate.Month) 

Console.WriteLine(mydate.Year) 
+0

好吧!我會嘗試這個,這可能工作! – TheOxblood

+0

可能要使用'ParseExact',只是爲了確保月份和日期不會互換... – Ryan

+0

此代碼工作正常! :) mybdate = Convert.ToDateTime(UserTbl.Rows(0).Item( 「生日」)) cmb_Month.SelectedIndex = mybdate.Month – TheOxblood

1

(一)你不應該使用區域的格式,如4/5/2012 - 是4月5日或5月4日?如果我不能說,SQL Server如何?

(b)如果將它作爲日期存儲(您將日期存儲爲日期而不是字符串,則右側),您並不需要分割任何東西?所以,如果你想從SQL Server做到這一點,你可以說:

SELECT 
    [day] = DAY(date_column), 
    [month] = MONTH(date_column), 
    [year] = YEAR(date_column) 
FROM 
(
    SELECT CONVERT(DATETIME, date_column, 103) 
    FROM 
    (
    SELECT '04/05/2012' 
    UNION ALL SELECT '4/5/2012' 
) AS x(date_column) 
) AS y; 

結果:

day month year 
--- ----- ---- 
4 5  2012 
4 5  2012 

如果列是DATE,那麼你就應該能夠說:

SELECT 
    date_column, 
    [day] = DAY(date_column), 
    [month] = MONTH(date_column), 
    [year] = YEAR(date_column) 
FROM 
    dbo.tablename; 
+0

感謝您的投入,但我用的日期設置爲我的專欄生日數據類型? – TheOxblood

+0

@TheOxblood:它的工作原理;你甚至不需要轉換任何東西。再次:變量'Birthdate'的類型是什麼? – Ryan

+0

Dean的答案適合我! :) – TheOxblood