Avatar billede koldy Nybegynder
20. januar 2002 - 21:03 Der er 26 kommentarer og
1 løsning

now() til DateTime collum i msSQL server

jeg kan ikke få det her til at virke hvad gør jeg galt??...

objConn.Execute(\"INSERT INTO bs (besked, bruger, dato) values (\'\" & Request.Form(\"besked\") & \"\', \'\" & Session(\"9c_usr\")  & \"\', \" & now() & \")\")

??
Plzz help.. :)
Avatar billede entracore Nybegynder
20. januar 2002 - 21:07 #1
Hviklet format har Now() - engelsk, dansk osv...
Avatar billede koldy Nybegynder
20. januar 2002 - 21:16 #2
dansk, begge steder..
Avatar billede koldy Nybegynder
20. januar 2002 - 21:17 #3
DD-MM-YYYY hh-mm-ss
Avatar billede entracore Nybegynder
20. januar 2002 - 21:32 #4
Ok - du skal formatere din dato til SQL format: yyyy-mm-dd hh:mm:ss inden du indsætter denne i tabellen.

Jeg har en funktion der gøre dette incase du er intresseret. Det virker dog kun til datoer i dansk format.
Avatar billede koldy Nybegynder
20. januar 2002 - 21:34 #5
jammen det er jeg meget intresseret i da jeg ikke har arbejdet så meget med case og incase, så hvis du gider smide det op som svar skal du nok få pointne for den!... :)
Avatar billede entracore Nybegynder
20. januar 2002 - 21:38 #6
SqlDate = ToSqlDate(Now())

Function IsBetween(aStart, aEnd, aExpression)   
        If IsNumeric(aExpression) And aExpression <> \"\" Then
            IsBetween = aExpression > aStart And aExpression < aEnd
        Else
            IsBetween = False
        End If
    End Function

    \'Returns true if expression is between or alike aStart and aEnd
    Function IsBetweenOrAlike(aStart, aEnd, aExpression)
        If IsNumeric(aExpression) And aExpression <> \"\" Then
            IsBetweenOrAlike = (Clng(aExpression) >= Clng(aStart) And Clng(aExpression) <= Clng(aEnd))
        Else
            IsBetweenOrAlike = False
        End If
    End Function   

    Function IsValidDate(byref aStringDate, byref aDay , _
        byref aMonth, byref aYear, byref aHour, _
        byref aMinutes , byref aSeconds )

        \'Day
        If Not IsBetweenOrAlike(1, 31, Mid(aStringDate, 1, 2)) then
            aDay = -1
        Else
            aDay = Mid(aStringDate, 1, 2)
        End if
        \'Month
        If Not IsBetweenOrAlike(1, 12, Mid(aStringDate, 4, 2)) then
            aMonth = -1
        Else
            aMonth = Mid(aStringDate, 4, 2)
        End if
        \'Year
        If Not IsBetweenOrAlike(0, 9999, Mid(aStringDate, 7, 4)) then
            aYear = -1
        Else
            aYear = Mid(aStringDate, 7, 4)
        End if
        \'Hour
        If Not IsBetweenOrAlike(0, 24, Mid(aStringDate, 12, 2)) then
            aHours = -1
        Else
            aHours = Mid(aStringDate, 12, 2)
        End if
        \'Min
        If Not IsBetweenOrAlike(0, 59, Mid(aStringDate, 15, 2)) then
            aMinutes = -1
        Else
            aMinutes = Mid(aStringDate, 15, 2)
        End if
        \'Sec
        If Not IsBetweenOrAlike(0, 59, Mid(aStringDate, 17, 2)) then
            aSeconds = -1
        Else
            aSeconds = Mid(aStringDate, 17, 2)
        End if
   
        IsValidDate = aDay <> -1 And aMonth <> -1 And aYear <> -1
    End Function

    Function ConvertToSQLDateTime(aDateString)
        Dim aDay, aMonth,aYear, aHours,aMinutes, aSeconds
   
        If IsValidDate(aDateString, aDay, aMonth, aYear, aHours, aMinutes, aSeconds) Then
            \'Legal date:
            If aDay <> -1 And aMonth <> -1 And aYear <> -1 Then
                ConvertToSQLDateTime = Format(aYear, \"0000\") + \"-\" _
                    + Format(aMonth, \"00\") + \"-\" _
                    + Format(aDay, \"00\")
           
                \'Legal hours and minutes:
                If aHours <> -1 And aMinutes <> -1 Then
                    ConvertToSQLDateTime = ConvertToSQLDateTime + \" \" _
                        + Format(aHours, \"00\") + \":\" _
                        + Format(aMinutes, \"00\")
           
                    \'Legal seconds:
                    If aSeconds <> -1 Then
                        ConvertToSQLDateTime = ConvertToSQLDateTime + \":\" _
                            + Format(aSeconds, \"00\")
                    Else
                        ConvertToSQLDateTime = ConvertToSQLDateTime + \":00\"
                    End If
                Else
                    ConvertToSQLDateTime = ConvertToSQLDateTime + \" 00:00:00\"
                End If
            Else
                ConvertToSQLDateTime = \"NULL\"
            End If
        Else
            ConvertToSQLDateTime = \"NULL\"
        End If
    End Function

    Function ConvertToSQLDate(aDateString)
        Dim aDay, aMonth,aYear, aHours,aMinutes, aSeconds

        If IsValidDate(aDateString, aDay, aMonth, aYear, aHours, aMinutes, aSeconds) Then
       
            \'Legal date:
            If aDay <> -1 And aMonth <> -1 And aYear <> -1 Then
                ConvertToSQLDate = aYear + \"-\" _
                    + aMonth + \"-\" _
                    + aDay
            Else
                ConvertToSQLDate = \"NULL\"
            End If
        Else
            ConvertToSQLDate = \"NULL\"
        End If
    End Function

    Function ToSQLDate(aString )
        Dim aDate

        aDate = ConvertToSQLDate(aString)

        If aDate <> \"NULL\" And aDate <> \"\" Then
            ToSQLDate = \"{d \'\" + aDate + \"\'}\"
        Else
            ToSQLDate = \"NULL\"
        End If
    End Function

    Function ToSQLDateTime(aString)
        Dim aDate

        aDate = ConvertToSQLDate(aString)

        If aDate <> \"NULL\" And aDate <> \"\" Then
            ToSQLDateTime = \"{ts \'\" + ConvertToSQLDateTime(aString) + \"\'}\"
        Else
            ToSQLDateTime = \"NULL\"
        End If
    End Function
Avatar billede koldy Nybegynder
20. januar 2002 - 21:39 #7
hvad jeg ikke forstår er hvis jeg skriver direkte ned i databasen, så kane jeg fint skrive på den her måde -> DD-MM-YYYY hh-mm-ss
Avatar billede koldy Nybegynder
20. januar 2002 - 21:40 #8
wo0w. den havde en pen længde :).. kan det virkelig ikke gøres nemmer ?...
Avatar billede koldy Nybegynder
20. januar 2002 - 21:43 #9
det virker ellers fint nok, bortset fra at jeg ikke for tid med??..
Avatar billede entracore Nybegynder
20. januar 2002 - 21:44 #10
Det er så vidt jeg kan forstå når du udefra forsøger at lagre data i et datofelt at det går galt. F.eks kan du ikke i din Query Analyzer skrive. Insert into Tabel (DatoFelt) Values(\'10-01-2002\') men derimod skrive det på formen 2002-01-10
Avatar billede koldy Nybegynder
20. januar 2002 - 21:45 #11
nej det er rigtig..
Avatar billede entracore Nybegynder
20. januar 2002 - 21:50 #12
ConvertToSQLDateTime(Now())
Avatar billede koldy Nybegynder
20. januar 2002 - 21:52 #13
nope det virkede ikke
fejl:
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: \'Format\'
/9c/9cbs.asp, line 84


SQL:
objConn.Execute(\"INSERT INTO bs (besked, bruger, dato) values (\'\" & Request.Form(\"besked\") & \"\', \'\" & Session(\"9c_usr\")  & \"\', \" & ConvertToSQLDateTime(Now()) & \")\")
Avatar billede koldy Nybegynder
20. januar 2002 - 21:56 #14
now() = 20-01-2002 21:56:21
Avatar billede koldy Nybegynder
20. januar 2002 - 21:59 #15
en løsning kunne vel være
objConn.Execute(\"INSERT INTO bs (besked, bruger, dato) values (\'\" & Request.Form(\"besked\") & \"\', \'\" & Session(\"9c_usr\")  & \"\', \" & SQLDate & \" \" & time() & \")\")
Avatar billede entracore Nybegynder
20. januar 2002 - 22:00 #16
Så virker det sgu ikke med tidspunkt, men kun datoen. Det er jeg sgu ked af... Det kan selvfølgelig lade sig gøre... men jeg sidder ikke lige inde med en funktion der tager tidspunktet med. :(
Avatar billede koldy Nybegynder
20. januar 2002 - 22:01 #17
det virker så heler ikke ?..
Avatar billede entracore Nybegynder
20. januar 2002 - 22:02 #18
Hvis du kan vente til i morgen aften - så vil jeg gerne biske sådan en funktion sammen til dig.
Avatar billede koldy Nybegynder
20. januar 2002 - 22:02 #19
oki.. mange tak ellers.. :)..
Avatar billede koldy Nybegynder
20. januar 2002 - 22:02 #20
håber det er i orden jeg bruger din funktion, indtil at jeg finder ud af det andet ?..
Avatar billede entracore Nybegynder
20. januar 2002 - 22:03 #21
Nej for formatet time = dd-mm-åååå
Avatar billede koldy Nybegynder
20. januar 2002 - 22:03 #22
jeg kan sagtens vente, ja :).. køre det bare med kun dato indtil da :)
Avatar billede entracore Nybegynder
20. januar 2002 - 22:05 #23
Ok - jeg smider lige en ny funktion op i morgen aften ved en 21 tiden ;-)
Avatar billede koldy Nybegynder
20. januar 2002 - 22:06 #24
?.... jammen det virker fint med SQLdate ??...
Avatar billede koldy Nybegynder
20. januar 2002 - 22:06 #25
oki.. nice.. mange tak..
Avatar billede koldy Nybegynder
24. august 2002 - 02:52 #26
har stadig ikke fået et svar der løser mit problem :( så jeg lukker og slukker :)
Avatar billede koldy Nybegynder
23. september 2002 - 17:07 #27
det kan også klares ved at bruge session.LCID 1033
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
Kurser inden for grundlæggende programmering

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