Tijd tussen twee afspraken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Als PHP developer (Symfony) bijdragen aan betere z

Functie Als Medior/Senior PHP developer wordt er een mate van zelfstandigheid verwacht, maar ook dat je goed in een team kunt opereren waar kennis wordt gedeeld en er bijvoorbeeld codereviews plaatsvinden. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden geactualiseerd.

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Back-end .NET Developer

Functie omschrijving C# / .NET Developer gezocht voor een dynamische organisatie in de regio Houten! Voor een leuke organisatie in de regio Houten zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. In deze functie werk jij aan verschillende projecten en ga je vaak bij klanten op bezoek. Binnen deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid treffen. Bedrijfsprofiel Waar ga je werken? Het bedrijf waar je gaat werken is gespecialiseerd in het ontwerpen en implementeren van procesautomatisering en procesinformatisering. Zij doen dit onder andere voor de (petro)chemie, pharma, infra,

Bekijk vacature »

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Front-end Developer

Dit ga je doen Doorontwikkelen van software; Ontwikkelen en testen van nieuwe functionaliteiten; Implementaties van nieuwe functionaliteiten en updates; Verzorgen van technische migraties naar nieuwe frameworks; Verwerken van incidenten. Hier ga je werken Onze klant, gevestigd in de regio Amsterdam, draagt bij aan het verbeteren van de veiligheid en efficiëntie van de Nederlandse infrastructuur door het ontwikkelen van afgemeten software oplossingen. Zo passen zij location intelligence toe om onderhoud en reparaties efficiënt te laten verlopen. Verder zorgen deze systemen dat incidenten zo snel mogelijk worden opgelost. Als Front-end Developer ben jij samen met je team betrokken met het (door)ontwikkelen van

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

Junior / Medior C# .NET ontwikkelaar in Brabants t

Bedrijfsomschrijving Ben jij een gepassioneerde C# .NET ontwikkelaar met een voorliefde voor hardware? Dan is dit de perfecte kans voor jou! Bij ons bedrijf krijg je de kans om deel uit te maken van een team van sociale en enthousiaste techneuten die er elke dag naar streven om onze eigen ontwikkelde software nog beter te maken. Het team van ongeveer 10 team medewerkers maakt zich hard om de interne processen gestroomlijnd te laten verlopen. Functieomschrijving Als lid van ons hechte en behulpzame team word je betrokken bij diverse projecten. Daarbij krijg je te maken met data-analyses, content en de logistieke

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »
Peter Brok

Peter Brok

22/05/2021 23:39:27
Quote Anchor link
Ik heb in een tabel rows met een begintijd en een eindtijd. Door deze van elkaar af trekken heb ik een periode. Deze geef ik weer in een tabel, het zijn afspraken in een kalender.

Nu wil de tijd berekenen tussen de eindtijd van de ene row en de begintijd van de volgende row. Hierdoor wil ik bepalen hoeveel tijd er tussen de twee afspraken zit. Dit om te bepalen of er nog een afspraak tussen kan.

Moet ik dit in PHP regelen of in sql? Tot nu toe is het mij niet gelukt om dit te berekenen.

Hieronder wat ik nu heb, de begin en eindtijd komen er per row wel uit, maar op deze manier trek ik de verkeerde getallen van elkaar. Appointment_begin en end zijn datumnotaties, dus in seconden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$sql_appointments = $conn->query('
SELECT appointment_begin, appointment_end
FROM appointment
WHERE employeeID = ' . $conn->quote(2) . 'ORDER BY appointment_begin');

                      while ($row_salon_appointments = $sql_salon_appointments->fetch(PDO::FETCH_ASSOC))
                          {

                           $aa = $row_salon_appointments['appointment_begin']);

                            
                       $bb date('Y-m-d H:i', $row_salon_appointments['appointment_end']);
                        
                           $cc = $bb - $aa;    

                           }
 
PHP hulp

PHP hulp

24/11/2024 17:13:43
 

23/05/2021 08:50:20
Quote Anchor link
Het hangt er van af welke database je gebruikt.

MySQL en MariaDB kunnen niet omgaan met periodes. Ze kennen geen INTERVAL als gegevenstype.
Dat betekent dat je met deze databases, voor zoiets triviaals het wiel al wéér zelf mag gaan uitvinden.
Je kunt dat omslachtig doen in SQL, maar je kunt het ook omslachtig doen in PHP, dat maakt niet veel uit.
De meesten rommelen dan wat aan met seconden per uur et cetera, maar uiteindelijk is het heel ingewikkeld om het helemaal goed te krijgen. Vanwege veranderende tijdzones en schrikkeljaren en schrikkelseconden.

Als je Postgres gebruikt, krijg je na het berekenen van het verschil tussen twee datums gewoon een INTERVAL gegevenstype, waarmee al het rekenwerk al voor je is gedaan, zoals het hoort in een database.
Je kunt je dan bezighouden met de vraag wat je wilt maken, in plaats van hoe je dat voor elkaar kunt krijgen.
Gewijzigd op 23/05/2021 08:57:13 door
 
Adoptive Solution

Adoptive Solution

24/05/2021 14:22:50
Quote Anchor link
Daar zullen ze bij MySQL en MariaDB van opkijken.

https://mariadb.com/kb/en/date-and-time-units/
https://mariadb.com/kb/en/timediff/

Triviaal voorbeeld :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT aanvang, einde, TIME_FORMAT( TIMEDIFF( einde,aanvang ), "%k uur %i minuten" ) AS duur FROM afspraken;


Maar de vraag was hoe je het verschil berekent tussen eindtijd van een regel en de begintijd van de volgende regel.

Bijvoorbeeld in een lus in PHP :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
for ($i = 0; $i < count; $i++) {
    echo $row[$i+1]['aanvang'] - $row[$i]['einde'] . '<br />';
}


Toevoeging op 24/05/2021 17:46:51:

Om de vragensteller op weg te helpen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<table>

<thead>
    <tr>
        <th>Einde (huidige row)</th>
        <th>Aanvang (volgende row)</th>
        <th>Duur</th>
    </tr>
</thead>

<?php
// aangenomen aanvang en einde zelfde dag
$afspraken = [];
while ( $row = $result->fetch_object() )
{

    $afspraken[] = $row;
    //echo '<pre>' . print_r( $afspraken, TRUE ) . '</pre>';
}
for ( $i = 0; $i < count($afspraken); $i++)
{

    // verder uitwerken aanvang volgende row vroeger/later einde huidige row
    //echo '<pre>' . print_r($row, TRUE ) . '</pre>';

    $einde = new DateTime( $afspraken[$i]->einde );
    if ($i < count($afspraken) )
    {

        $aanvang  = new DateTime( $afspraken[$i+1]->aanvang );
        $verschil = $einde->diff($aanvang);
    }

    echo '<tr><td>' .
        $einde->format('H:i') .
        '</td><td>' .
        $aanvang->format('H:i') .
        '</td><td>' .
        $verschil->format('%H:') .
        str_pad($verschil->format('%i'),2,"0",STR_PAD_LEFT) .
        '</td></tr>';
}

?>


</table>
Gewijzigd op 24/05/2021 17:47:53 door Adoptive Solution
 

25/05/2021 09:35:05
Quote Anchor link
Het is zeker leuk dat het voorbeeld lijkt te werken met de twee functies TIME_FORMAT() en TIMEDIFF().
Toch ligt het anders (helaas).

TIMEDIFF() is gemaakt om verkeerde uitkomsten te geven als de data niet klopt of als de twee datums te ver uit elkaar liggen:
Quote:
"The result returned by TIMEDIFF() is limited to the range allowed for TIME values."

En over TIME values wordt gezegd:
Quote:
"TIME values may range from '-838:59:59' to '838:59:59'."

Het meest slecht is dat de verwachte uitkomst stilzwijgend wordt veranderd naar iets dat MySQL past:
Quote:
"By default, values that lie outside the TIME range but are otherwise valid are clipped to the closest endpoint of the range. [...] Note that because '00:00:00' is itself a valid TIME value, there is no way to tell, from a value of '00:00:00' stored in a table, whether the original value was specified as '00:00:00' or whether it was invalid."

Het precieze gedrag van TIMEDIFF() wordt ook nog eens beïnvloed door het niet goed ondersteunen van tijdzones en globale serverinstellingen als ALLOW_INVALID_DATES.
Rekenen met tijd in MySQL is dus weinig consequent en weinig betrouwbaar.

Helaas biedt MySQL geen andere opties om met een INTERVAL te werken. Een INTERVAL onthoudt het aantal kalendermaanden, weken, dagen, etc. De enige manier is om te rekenen met seconden, die geen rekening houden met schrikkeljaren, schrikkelseconden, kalendermaanden of tijdzones:
Quote:
"Alternatively, you can use either of the functions TIMESTAMPDIFF() and UNIX_TIMESTAMP(), both of which return integers."

Nu was er ooit, 15 jaar geleden, een slim iemand die vroeg om het INTERVAL datatype te ondersteunen.
Maar daar is nooit wat mee gedaan.
Wat moet je dan nog met MySQL?

Dan het alternatief in PHP, is dat zoveel beter?
Mijn ervaring is dat DateTime in PHP 4 niet eens werkte, en alleen maar foute resultaten gaf.
Uit de lange maar ook recente lijst van bugs valt op te maken dat het nog steeds niet altijd betrouwbaar is:
https://bugs.php.net/search.php?cmd=display&project=PHP&order_by=id&direction=DESC&limit=30&package_name[]=Date%2Ftime+related
Ik zou het niet in een productie-omgeving durven te gebruiken.

Maar waarom zou je ook blijven aanmodderen en steeds het wiel weer opnieuw uitvinden, als je in plaats daarvan IntlCalendar kunt gebruiken, of een fatsoenlijke database als Postgres (eigenlijk alles behalve MySQL/MariaDB) ?
Gewijzigd op 25/05/2021 09:43:56 door
 
Jan R

Jan R

26/05/2021 07:54:40
Quote Anchor link
Mogelijks zou je ook iets kunnen doen met een self-join
select * from tbl t1 join tbl t2 where ???

Hier moeten we de exacte structuur hebben
maar iets zoals zelfde medewerker en later maar vroegste uur dan deze afspraak

Net zelf zoiets gedaan voor vervolg van gesprek.
 
Peter Brok

Peter Brok

27/05/2021 23:47:45
Quote Anchor link
Bedankt allemaal, ik heb alles over tijd met belangstelling gelezen. Het is het volgende geworden en het werkt! Niet zelf bedacht! :-;


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$sql_appointments
= $conn->query("
SELECT appointment_begin
FROM appointments
WHERE appointment_begin >= $appointment_beginID AND employeeID = $employeeID
ORDER BY appointment_begin
LIMIT 1"
);

$row_appointments = $sql_appointments->fetch(PDO::FETCH_ASSOC);

$start_free_time = $row_appointments['appointment_begin'];
$end_free_time = $appointment_beginID;

$result_free_time = $start_free_time - $end_free_time ;

$result_free_time_minutes = ($result_free_time/60) - $duration_total;

if($start_free_time <> "") {
  if( $result_free_time_minutes < 0) {    
    ?>

    <div class="alert">
    <span class="closebtn" onclick="location.href='index.php';" >&times;</span>
    <strong>Let op!</strong> Deze afspraak is te lang voor de beschikbare tijd.
    Druk p het kruisje om terug te gaan.
    </div>
    <?php ; } ?>


Edit:
Code-tag gefixxed. Bracket miste in de tag.
Gewijzigd op 28/05/2021 00:38:12 door - Ariën -
 
Ivo P

Ivo P

28/05/2021 12:31:07
Quote Anchor link
Wat nu als er geen volgende appointment gevonden wordt door die query?
 
Jan R

Jan R

28/05/2021 13:06:31
Quote Anchor link
Dank krijg je null en weet je ook wat te doen :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.