Avatar billede stigc Nybegynder
08. maj 2002 - 09:14 Der er 8 kommentarer og
3 løsninger

Sammeligne datetime i SQL

select * where mydatetimefield = '12-12-2002 12:12:12'

Giver ikke hvad jeg vil ha', da databasen arbejder med milisekunder. Hvad er den pæneste løsning til at få de ønskest rækker? Den skal altså se bort fra milisekunder ob kun sammelign med en præcision ned til sekundtet.
Avatar billede bennytordrup Nybegynder
08. maj 2002 - 09:18 #1
Du er nødt til at konvertere datofelterne via en convert. Kig i books online
Avatar billede stigc Nybegynder
08. maj 2002 - 09:24 #2
jeg ønsker gerne et svar her.. :)
Avatar billede jakobandersen Nybegynder
08. maj 2002 - 09:27 #3
SELECT * FROM tblMMSNyheder WHERE DATEDIFF(ss, Dato,  '2002-04-02 14:14:27') <= 1 AND DATEDIFF(ss, Dato, '2002-04-02 14:14:27') >= 0

Eller også:

SELECT * FROM tblMMSNyheder WHERE DAY(Dato) = DAY('2002-04-02 14:14:27') AND MONTH(Dato) = MONTH('2002-04-02 14:14:27') AND YEAR(Dato) = YEAR('2002-04-02 14:14:27') AND DATEPART(n,Dato) = DATEPART(n,'2002-04-02 14:14:27') AND DATEPART(ss,Dato) = DATEPART(ss,'2002-04-02 14:14:27')
Avatar billede jakobandersen Nybegynder
08. maj 2002 - 09:27 #4
Øh.. Svar
Avatar billede bennytordrup Nybegynder
08. maj 2002 - 09:29 #5
select * from mytable where convert(nvarchar(19), mydatefield, 120) = '2002-12-13 13:13:13'

Datoformetet, du sammenligner med, skal være yyyy-mm-dd hh:mm:ss.
Avatar billede jakobandersen Nybegynder
08. maj 2002 - 09:36 #6
Benny.Tordrup>> Når man konverterer et dato felt til en varchar får man en dato ala dette:

'Apr  2 2002  2:14PM' afhængig af Db'ens sprogindstillinger så jeg tvivler på den går.
Avatar billede bennytordrup Nybegynder
08. maj 2002 - 09:38 #7
moonduck> læs bol.

select convert(nvarchar(19), getdate(), 120)

giver

-------------------
2002-05-08 09:35:10

(1 row(s) affected)


style 120 er ODBC Canonical
Avatar billede jakobandersen Nybegynder
08. maj 2002 - 09:42 #8
Det må du undskylde, jeg havde ikke lige set du havde en style med.
Avatar billede _just4fun_ Nybegynder
09. maj 2002 - 21:11 #9
Den skal altså returnere de records, hvor mydatetimefield er i et givent sekund? Eller har du fundet ud af et svar selv?
Avatar billede tormork Nybegynder
16. maj 2002 - 07:17 #10
select * where Cast(mydatetimefield as smalldatetime) = '12-12-2002 12:12:12'
Skulle give det du ønsker. smalldatetime har kun prec. ned til sek. den du mydatetimefield har det ned til 1/1000 del sek (vil jeg gætte på)
Avatar billede bennytordrup Nybegynder
16. maj 2002 - 08:29 #11
Fik du løst problemet?
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