/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL] Antal timer udfra et datetime felt
Fra : Martin


Dato : 21-03-05 02:00

Hejsa gutinder og gutter...

Jeg har et lille problem med min database
Jeg har et datetime felt hvor jeg har indsat nogen forskellige
tidspunkter i.

+---------------------+
| tid |
+---------------------+
| 2005-03-21 02:35:16 |
| 2005-03-21 02:34:18 |
| 2005-05-09 01:32:55 |
| 2005-03-21 02:32:34 |
| 0000-00-00 00:00:00 |
| 0000-00-00 00:00:00 |
| 2005-03-21 02:35:17 |
| 2005-03-21 03:00:17 |
+---------------------+

Nu skal jeg finde ud af hvor mange timer der er i hver altså.

(tiden lige nu er 02:00:00)

Så skal den første i tid altså give 1 time (da 35 jo skal rundes op)
Den sidste skal så give 2 timer.
Og dem med 0000-00-00 skal den ikke skrive noget ved.

Hvordan kan det gøres?

Jeg tænkte noget i stil med at finde ud af hvor mange timer NOW() er fra
unixtime også ellers minus det med tid i databasen, men kan ikke lige
hitte den ud :(

 
 
Kristian Damm Jensen (21-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 21-03-05 10:37


Martin wrote:
> Hejsa gutinder og gutter...
>
> Jeg har et lille problem med min database
> Jeg har et datetime felt hvor jeg har indsat nogen forskellige
> tidspunkter i.
>
> +---------------------+
> | tid |
> +---------------------+
> | 2005-03-21 02:35:16 |
> | 2005-03-21 02:34:18 |
> | 2005-05-09 01:32:55 |
> | 2005-03-21 02:32:34 |
> | 0000-00-00 00:00:00 |
> | 0000-00-00 00:00:00 |
> | 2005-03-21 02:35:17 |
> | 2005-03-21 03:00:17 |
> +---------------------+
>
> Nu skal jeg finde ud af hvor mange timer der er i hver altså.
>
> (tiden lige nu er 02:00:00)
>
> Så skal den første i tid altså give 1 time (da 35 jo skal rundes
op)
> Den sidste skal så give 2 timer.
> Og dem med 0000-00-00 skal den ikke skrive noget ved.
>
> Hvordan kan det gøres?
>
> Jeg tænkte noget i stil med at finde ud af hvor mange timer NOW() er
fra
> unixtime også ellers minus det med tid i databasen, men kan ikke
lige
> hitte den ud :(


Jeg går ud fra, at du kender til
<http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html>.
Ellers bør du kigge på den.

Prøv noget i retning af

select tid
, Hour(tid) AS "antal timer rundet ned"
, Hour(date_add(tid, interval '29:59' MINUTE_SECOND)
AS "antal timer rundet af"
from tid


VH
Kristian


Geert Lund (21-03-2005)
Kommentar
Fra : Geert Lund


Dato : 21-03-05 12:49

Kristian Damm Jensen wrote:

> select tid
> , Hour(tid) AS "antal timer rundet ned"
> , Hour(date_add(tid, interval '29:59' MINUTE_SECOND)
> AS "antal timer rundet af"
> from tid

Bare lige til reminder - der mangler en afsluttende parantets i det
andet statement som således skulle være: Hour(date_add(tid, interval
'29:59' MINUTE_SECOND))

Og så skal man lige overveje om 02:30:00 skal rundes op eller ned. I dit
eksempel vil det blive rundet ned til 2 timer da du lægger 29:59 til
tiden. Hvor imod jeg umiddelbart nok hælder mere til at den bør rundes
op og dermed burde der i stedet lægges '30:00' til tiden.

Men det er en smagssag - vil blot pointere at det kan have betydning for
et forventet resultat hvis man ikke lige overvejer det punkt :)

--
Med venlig hilsen
Geert Lund - www.gld.dk

Martin (21-03-2005)
Kommentar
Fra : Martin


Dato : 21-03-05 18:20

Kristian Damm Jensen wrote:

> Jeg går ud fra, at du kender til
> <http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html>.
> Ellers bør du kigge på den.
>
> Prøv noget i retning af
>
> select tid
> , Hour(tid) AS "antal timer rundet ned"
> , Hour(date_add(tid, interval '29:59' MINUTE_SECOND)
> AS "antal timer rundet af"
> from tid
>

Perfekt - jeg kunne bare ikk lige hitte ud af det kl alt for sent om
natten - men da jeg vågnede og lige læste din besked - så slog jeg mig
til hovedet selvfølgelig :)

Tak for hjælpen

Kristian Damm Jensen (21-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 21-03-05 15:07


Geert Lund wrote:
> Kristian Damm Jensen wrote:
>
> > select tid
> > , Hour(tid) AS "antal timer rundet ned"
> > , Hour(date_add(tid, interval '29:59' MINUTE_SECOND)
> > AS "antal timer rundet af"
> > from tid
>
> Bare lige til reminder - der mangler en afsluttende parantets i det
> andet statement som således skulle være: Hour(date_add(tid,
interval
> '29:59' MINUTE_SECOND))
>
> Og så skal man lige overveje om 02:30:00 skal rundes op eller ned. I
dit
> eksempel vil det blive rundet ned til 2 timer da du lægger 29:59 til

> tiden. Hvor imod jeg umiddelbart nok hælder mere til at den bør
rundes
> op og dermed burde der i stedet lægges '30:00' til tiden.
>
> Men det er en smagssag - vil blot pointere at det kan have betydning
for
> et forventet resultat hvis man ikke lige overvejer det punkt :)

Enig. Derfor indgangsbønnen: "Prøv noget i retning af".

I øvrigt er "29:59" en smutter fra forskellige overvejelser. Jeg ville
også vælge "30:00"

VH
Kristian


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste