Tijd tussen twee afspraken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lasrobotprogrammeur/operator (M/V)

Heb je interesse in trekkers en beschik je overvlijmscherpse precisie? Solliciteer dan op deze vacature! Als Lasoperator ben je vooral bezig met het maken van nieuwe lasrobotprogramma’s en het optimaliseren van bestaande programma’s, zowel online als offline (incl. het bedienen van de Lasrobots). Daarnaast draag je bij aan een optimaal rendement van de las robots. Verder heb je de volgende werkzaamheden: Het meewerken als operator c.q. Robotlassen niveau 2 (van complexe samenstellingen/halffabricaten), het om- en instellen van de diverse stations van lasmallen (productdragers), het afwerken van laswerk (verwijderen lasspetters en oxiden), het bewaken van de machineplanning (op bewerkingen) incl. de

Bekijk vacature »

PHP Developer op HBO/WO niveau gezocht!

Bedrijfsomschrijving De wereld staat altijd aan, en dat is niet anders voor de IT sector! Kom jij werken bij deze internationale werkgever welke actief is in ruim 140 landen? Het bedrijf is actief in 140 landen en houdt zich bezig met het maken van zeer technische software gericht op mobiele infrastructuren. Veel bedrijven maken gebruik van allerlei verschillende soorten mobiele apparatuur, en aangezien dit landschap zo groot wordt houdt mijn klant zich bezig met volledige automatisering van de ontzorging op dit gebied! Werking van mobiele apparatuur en continuïteit van de bedrijfsprocessen is zeer belangrijk en daar ga jij je als

Bekijk vacature »

Als Front-end developer (React) bijdragen aan de z

Functie Het front-end team bestaat uit 2 (medior) developers, momenteel zijn ze op zoek naar een medior of senior developer die dit team komt versterken. Hij of zij zal zich, samen met het team, vooral gaan bezighouden met vraagstukken rondom onderhoud, testen en doorontwikkeling. Zo komt er bijvoorbeeld een update aan m.b.t. het React framework welke zij graag willen doorvoeren. Hierin kiezen ze echt voor kwaliteit en krijg je dan ook de ruimte om zonder strakke deadlines hiermee aan de slag te gaan. Als Front-end developer binnen deze organisatie fungeer je echt als schakel tussen UX (Research) en back-end. De

Bekijk vacature »

PHP ontwikkelaar

Functie Jij komt te werken in een development team van 9 man. Het grootste deel doet back end development en daarnaast is er 1 teamlead en 1 tester in het team. Dit Agile team is van groots belang voor de organisatie omdat zij voornamelijk alle eigen systemen in-house ontwikkelen. Naast het door ontwikkelen van het bestaande platform en de software die daarbij komt kijken, zul jij je ook bezighouden met het realiseren en opzetten van nieuwe projecten binnen het bedrijf. Je staat nauw met de klant in contact om zo hun wensen zo goed mogelijk te kunnen realiseren. Daarnaast ontwikkel

Bekijk vacature »

Front-end developer

Zie jij het wel zitten om de websites en webshops van het coolste bedrijf van Nederland te onderhouden? Ben je daarbij ook nog een ware social media ster die dit tot in de puntjes kan organiseren? Lees dan snel verder! Wat bieden wij jou Een goed salaris Een auto van de zaak is bespreekbaar Gezelligheid op de werkvloer Direct op contract bij de werkgever Wie ben jij Als front-end developer zorg je ervoor dat de websites en webshops aantrekkelijk blijven. Daarnaast blijf je vernieuwen en meedenken in de marketing. Verder zijn er nog een paar puntjes die belangrijk zijn voor

Bekijk vacature »

VB.NET developer

Functie Het development team waar jij in terecht komt bestaat uit twee ervaren software developers. De directeur/eigenaar is tevens één van deze developers. Jij werkt direct samen met jouw werkgever en kan dan ook veel kennis en ervaring bij dit bedrijf op doen. Als team zijn jullie verantwoordelijk voor de kantoorapplicatie die deze organisatie aanbied in een niche markt. Het team is op dit moment actief bezig met een migratie waarbij het eindstation eindigt in een C# .NET omgeving. Echter is een deel van de software al geschreven in C# .NET. Hierbij is gebruik gemaakt van C# .NET, CSS, HTML,

Bekijk vacature »

Medior Frontend developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA GEOS werken onze consultants als Frontend Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Frontend Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam je kijkt verder dan je eigen rol. Eventueel begeleid je ook andere ontwikkelaars in het softwareontwikkelproces. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit

Bekijk vacature »

Unieke PHP functie: Laravel in combinatie met Hard

Bedrijfsomschrijving Onze opdrachtgever is een organisatie die flexibele hardware, back office verbindingen en de beste rapportage- en managementtools in de transportsector biedt. Voor dit mooie bedrijf zoeken we een talentvolle PHP Developer om de groei van het bedrijf te ondersteunen. Als PHP developer zul je niet alleen zorg dragen voor de connectiviteit met de hardware die ze in de markt hebben staan maar ook actief meewerken aan de ontwikkeling en verbetering van de IoT core, (automotive)oplossingen en verschillende mobiliteits producten. Ze zijn internationaal actief en met hun slimme applicaties zorgen ze dat de vrachtwagens van transportbedrijven door heel Europa te

Bekijk vacature »

Medior/senior Back-end developer wanted!

Functie Because of the growth within the company, we are looking for reinforcement in the devlopmenttean. As a back-end developer you build the company software that helps us with the primary processes. A fun (internal) project in which you continuously develop the software! You will work in a small team, we have daily stand-ups and a scrum session every fortnight, led by our Scrum Master. During these sessions, you get the opportunity to present your ideas and discuss them with your fellow developers and the Product Owner. Within the development teams, we use Trello, Gitlab, Jiira, Confluence and Boockstack. They

Bekijk vacature »

Software Developer

Back-end / Fullstack Developer Draag jij graag je steentje bij aan het verbeteren van het dagelijks leven van mensen in de samenleving? Vicrea Solutions in Amersfoort bedient een interessant klantenportfolio met veel organisaties in de publieke sector. Als back-end / fullstack developer bouw jij aan een baanbrekend product dat een echte impact heeft op klanten en de samenleving. Je lost complexe problemen op die variëren van prestaties en schaalbaarheid tot bruikbaarheid. Klinkt dit als iets voor jou? Lees dan hieronder verder. Zo ziet de functie eruit: Samen met het R&D-team ga je de uitdaging aan om nieuwe mogelijkheden te ontwikkelen

Bekijk vacature »

.Net ontwikkelaars gezocht: 3 dagen remote werken!

Bedrijfsomschrijving Wij gaan het team van mijn klant uitbreiden en daarom is er per direct behoefte aan meerdere ontwikkelaars! Dit bedrijf is continu op zoek naar uitbreiding van het team en is nog steeds groeiend door het aanbieden van steeds weer nieuwe software bij de vele vaste klanten. Het bedrijf heeft een moderne mindset en maakt alleen maar microsoft (web)software voor haar klanten. Ze houden zich bezig met bedrijfsportals, ERP-systemen en webshops. Het zijn veel langdurige projecten, maar er komen ook steeds meer kleinere projecten tussendoor. In totaal werken er zo'n 30 mensen op het kantoor waarvan er een aantal

Bekijk vacature »

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Java Developer / Back-end Developer / 5000 euro

Dit ga je doen Het ontwikkelen van applicaties en websites met behulp van Java en Spring; Werken aan lange termijn projecten; Oppakken van ad hoc activiteiten en processen; Nieuwe ontwikkelingen in de gaten houden en toepassen; Analytisch en kritisch meedenken over verbeteringen in tools en werkwijzen. Hier ga je werken Onze klant is een high traffic organisatie die kwaliteit en digitale transformatie hoog in het vaandel heeft staan. Het is een dynamische en autonome organisatie gevestigd in hartje Amsterdam. Het professionele team waar je in komt te werken is multidisciplinair. Het team werkt erg nauw samen en gebruiken gezamenlijk Scrum

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Go developer

Functie Het development team is klein en compact. Dit is altijd zo geweest en zal ook altijd zo blijven. Dit betekent dat je heel nauw samenwerkt met je collega’s en de lijnen erg kort zijn. Er wordt voornamelijk geprogrammeerd in GO, PHP, Javascript en Node.js, maar ook zul je zo nu en dan gebruik maken van talen zoals; C en Python. Wij hebben met veel data te maken en dit is momenteel onze grootste uitdaging op de backend. We maken gebruik van ruim 800 servers, waarvan 600 servers gebruikt worden voor dataopslag. Er draaien meerdere microservices op deze servers, maar

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

09/02/2023 14:08:49
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 
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
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 
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.