2013-01-19 3 views
-1

Je veux diviser la colonne de naissance dans ma base de données ..de Split chaîne de SQL Server

Returned String from database : dd/mm/yyyy 

Je veux obtenir chaque valeur sur une des chaînes séparées,

date = dd 
month = mm 
year = yyyy 

J'ai essayé quelque chose comme ça .. mais cela ne fonctionne pas toujours parce que certaines dates étaient un seul personnage? ex. 4/5/2012

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

Est-ce que 'Birthdate' a' String'? Si c'est un 'String', n'appelez pas' ToString'. Si c'est un 'Date', utilisez plutôt sa propriété' Day'! – Ryan

Répondre

2

Vous ne pouvez pas non plus convertir la chaîne revenant de la base de données en une date? Vous pouvez ensuite accéder à chaque composant en utilisant Date.Month, etc.

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

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

Console.WriteLine(mydate.Year) 
+0

Très bien! Je vais essayer ça, ça pourrait marcher! – TheOxblood

+0

Peut-être vouloir utiliser 'ParseExact', juste pour s'assurer que le mois et le jour ne sont pas échangés ... – Ryan

+0

Ce code a fonctionné! :) mybdate = Convert.ToDateTime (UserTbl.Rows (0) .Item ("Date de naissance")) cmb_Month.SelectedIndex = mybdate.Month – TheOxblood

1

(a) vous ne devriez pas utiliser des formats régionaux comme 4/5/2012 - est que 5ème Avril ou le 4 mai? Si je ne peux pas dire, comment peut SQL Server? (B) vous n'avez vraiment pas besoin de diviser quelque chose s'il est stocké sous forme de date (vous stockez vos dates sous forme de dates, et non de chaînes, à droite)? Donc, si vous voulez le faire à partir de SQL Server, vous pouvez dire:

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; 

Résultat:

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

Si votre colonne est DATE alors vous devriez juste pouvoir dire:

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

Merci pour vos entrées, mais j'ai utilisé la date comme type de données pour ma colonne Birthdate? – TheOxblood

+0

@TheOxblood: Donc cela fonctionne; vous ne devriez même pas devoir convertir quoi que ce soit. Encore une fois: quel est le type de la variable 'Birthdate'? – Ryan

+0

La réponse de Dean a fonctionné pour moi! :) – TheOxblood