Avatar billede stinejh1980 Nybegynder
16. marts 2010 - 13:28 Der er 16 kommentarer og
2 løsninger

Hjælp til statement

SELECT    NewsID, NewsDate, Headline, NewsText, ImageData, ImageName, CountryID, HQ, ImageHeight, ImageWidth
FROM        News_Tbl
ORDER BY NewsDate

Giver mig følgende sortering:
05-01-2010 17:31:46
05-01-2010 17:40:36
05-01-2010 17:45:26
07-03-2010 22:24:24
10-12-2009 11:57:11
11-12-2009 11:57:42
12-03-2010 19:23:49
22-02-2010 09:39:44
23-02-2010 17:19:52
26-02-2010 13:01:40

Er der nogen der kan hjælpe mig med at sortere mine nyheder så den øverste er den sidste nye og den nederste er den ældste.
Avatar billede drlotto Nybegynder
16. marts 2010 - 13:32 #1
Din newsid er vel en unik id, der automatisk stiger?
Avatar billede drlotto Nybegynder
16. marts 2010 - 13:36 #2
Glemte helt at skrive mit forslag:

SELECT  NewsID, NewsDate, Headline, NewsText, ImageData, ImageName, CountryID, HQ, ImageHeight, ImageWidth
FROM        News_Tbl
ORDER BY NewsID DESC
Avatar billede stinejh1980 Nybegynder
16. marts 2010 - 13:42 #3
Ja, men jeg vil sortere ud fra dato
Avatar billede drlotto Nybegynder
16. marts 2010 - 13:43 #4
hvorfor det? hvis det er den nyeste dato har den højeste NewsID?
Avatar billede stinejh1980 Nybegynder
16. marts 2010 - 13:47 #5
Fordi at man kan godt oprette en ny nyhed med en dato ældre end dags dato
Avatar billede drlotto Nybegynder
16. marts 2010 - 13:49 #6
Okay, så kan jeg ikke lige hjælpe dig med din opgave.
Avatar billede drlotto Nybegynder
16. marts 2010 - 13:51 #7
Du kan jo self lave din dato lidt om,

hvis datoen var:  YYYY-MM-DD HH:MM:SS

burde SQL kunne klare resten.
Avatar billede arne_v Ekspert
16. marts 2010 - 14:45 #8
ORDER BY NewsDate DESC

??
Avatar billede drlotto Nybegynder
16. marts 2010 - 14:55 #9
arne_v den vil ikke virke, når datoen er: DD-MM-YYYY da 31-10-2009 er større end 10-01-2010
Avatar billede arne_v Ekspert
16. marts 2010 - 15:14 #10
Er det felt en VARCHAR og ikke en DATETIME ?
Avatar billede arne_v Ekspert
16. marts 2010 - 15:17 #11
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.
Avatar billede arne_v Ekspert
16. marts 2010 - 15:18 #12
Evt. CONVERT til DATETIME hvis vi kan finde et matchende format.
Avatar billede hijacked Nybegynder
16. marts 2010 - 16:46 #13
order by convert(smalldatetime,NewsDate,120) desc

burde virke
Avatar billede hijacked Nybegynder
16. marts 2010 - 17:29 #14
order by convert(smalldatetime,NewsDate,120) desc
Avatar billede stinejh1980 Nybegynder
21. april 2010 - 14:26 #15
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"))
Avatar billede Syska Mester
21. april 2010 - 14:42 #16
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 ...
Avatar billede arne_v Ekspert
26. april 2010 - 03:24 #17
svar
Avatar billede arne_v Ekspert
26. april 2010 - 03:28 #18
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.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester