27. december 2011 - 16:36
Der er
11 kommentarer og 1 løsning
DATE funktioner i SQL
Hej. jeg har et dato format i en SQL server 2008 bygget op på følgende måde (typen er string): 2008/06/17 2011/08/17 2008/04/1 Jeg har tiden i en anden kolonne med opbygningen (typen er string) 092345 184511 235959 Kan jeg opbygge en ny kolonne (vha. f.eks. SUBSTRING) ud fra de to eksisterende kolonner og definerer denne nye kolonne som DateTime?
Annonceindlæg fra QNAP
27. december 2011 - 16:41
#1
Hvorfor ikke bare have det hele i en DateTime kolonne?
27. december 2011 - 16:54
#3
Jeg har faktisk en paa lageret: using System; using System.Globalization; using System.Data.Sql; using System.Data.SqlTypes; using System.Data.SqlClient; using Microsoft.SqlServer.Server; namespace E { public class DateTimeUtil { [SqlFunction] public static SqlString XFormat(DateTime dt, string fmt) { return dt.ToString(fmt, new CultureInfo("en-US")); } [SqlFunction] public static SqlDateTime XParse(string s, string fmt) { DateTime res; if(DateTime.TryParseExact(s, fmt, new CultureInfo("en-US"), DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out res)) { return res; } else { return SqlDateTime.Null; } } } } Mulighederne for Format kan slaas op i .NET dokumentationen.
27. december 2011 - 17:18
#4
beklager Arne men jeg er ikke hardcore programmør som dig... Jeg forstår ikke koden oven for (jeg programmerer i Delphi) og jeg kender heller ikke til CLR UDF koden 'Select DatePhysical, convert(datetime,DatePhysical,111) as agubsa from [Fiberline-Info]..[Stocktrans] ' virker fint men 'Select DatePhysical, convert(datetime,DatePhysical,111) as agubsa from [Fiberline-Info]..[Stocktrans] where agubsa > :DatoStart and agubsa < :DatoSlut '; giver mig fejlen "invalid column name agubsa" Hvordan får jeg tidstampet ind i agubsa kolonnen?
27. december 2011 - 18:06
#5
SELECT laves reelt set efter WHERE, og derfor kan du ikke bruge den dernede. Du bliver nød til at lave convert i din where clause.
27. december 2011 - 18:41
#6
Hej Buzzzzzzzzzzzzzzzz og det virkede jo så helt fantastisk... Nogen ideer til hvordan jeg får DATO formatete koblet sammen med et tidsformat i en selvstændigkolonne - tidsformattet ser således ud: 092345 184511 235959
27. december 2011 - 20:01
#7
vaelg et format som indeholder baade dag og tid og klippe klister sammen i det format med SUBSTRING og +
27. december 2011 - 20:09
#8
jo tak Arne, men har du et eksempel som jeg kan tage udgangspunkt i....?? Jeg er med på SUBTSRING og + men ikke med på "format som indeholder baade dag og tid" - hvordan vælger jeg et format i SQL server? Du behøver ikke løse det hele,e bare lige hvis mig det helt grundlæggende princip... og smid et svar sammen med Buzz så jeg få uddelt pointene...
27. december 2011 - 20:11
#9
proev CONVERT(REPLACE(datofelt,'/','-') + ' ' + SUBSTRING(tidfelt,1,2) + ':' + SUBSTRING(tidfelt,3,2) + ':' + SUBSTRING(tidfelt,5,2), 120)
27. december 2011 - 20:12
#10
Der er en liste af formater i det link jeg gav i #2
27. december 2011 - 20:24
#11
fantastisk - og så skal du da lige have pointene... smider du et svar...?? beklager bøvlet med amatøren her ;-)
27. december 2011 - 20:33
#12
svar
Computerworld tilbyder specialiserede kurser i database-management