Din newsid er vel en unik id, der automatisk stiger?
Glemte helt at skrive mit forslag:
SELECT NewsID, NewsDate, Headline, NewsText, ImageData, ImageName, CountryID, HQ, ImageHeight, ImageWidth
FROM News_Tbl
ORDER BY NewsID DESC
Ja, men jeg vil sortere ud fra dato
hvorfor det? hvis det er den nyeste dato har den højeste NewsID?
Fordi at man kan godt oprette en ny nyhed med en dato ældre end dags dato
Okay, så kan jeg ikke lige hjælpe dig med din opgave.
Du kan jo self lave din dato lidt om,
hvis datoen var: YYYY-MM-DD HH:MM:SS
burde SQL kunne klare resten.
arne_v den vil ikke virke, når datoen er: DD-MM-YYYY da 31-10-2009 er større end 10-01-2010
Er det felt en VARCHAR og ikke en DATETIME ?
Ser saadan ud. Det bedste ville saa nok vaere at lave feltet til en DATETIME.
Ellers maa man konvertere til den form du angiver i #7 med noget SUBSTRING manipulation.
Evt. CONVERT til DATETIME hvis vi kan finde et matchende format.
order by convert(smalldatetime,NewsDate,120) desc
burde virke
order by convert(smalldatetime,NewsDate,120) desc
Af en eller anden grund har jeg ikke fået email at det er lagt beskeder efter #6
Arne_v >> smid et svar så deler i Point
Jeg løste det på følgende måde: Oprettelse af dato
Dim myNewsDate As Integer = ConvertToUnixTimestamp(DateTime.Now)
Private Shared Function ConvertToUnixTimestamp(ByVal MyDate As DateTime) As Double
Dim origin As New DateTime(1970, 1, 1, 0, 0, 0, 0)
Dim diff As TimeSpan = MyDate - origin
Return Math.Floor(diff.TotalSeconds)
End Function
Og når jeg skal vise dato:
Dim origin As New DateTime(1970, 1, 1, 0, 0, 0, 0)
origin.AddSeconds(MyDS.Tables(0).Rows(i).Item("NewsDate"))
Er det ikke lidt en stor omvej med alt det convert frem og tilbage ?
Har du ikke mulighed for at ændret formatet i databasen til DateTime? istedet for varchar/char som du bruger nu ... ?
Det sparer dig for en masse hovdepine over længere sigt ...
Jeg er iøvrigt lidt skeptisk overfor om det du konverterer til og fra er Unix timestamp, hvis du befinder dig i Danmark.
Jeg har ihvertfald følgende C# kode liggende på lageret:
private static long k = (new DateTime(1970, 1, 1, 0, 0, 0) + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)).Ticks;
public static int N2U(DateTime dt)
{
return (int)((dt.Ticks - k) / 10000000);
}
Det er ligegyldigt at du bruger TimeSpan.TotalSeconds og jeg bruger Ticks og almindelige operationer. Forskellen er tidszone korrektionen.