Tijd tussen twee afspraken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Gorinchem zijn wij op zoek naar versterking. Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back end werken! Bedrijfsprofiel Onze

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

Bekijk vacature »

Software Developer PHP JavaScript Python HBO SQL

Samengevat: Wij zijn een softwarebedrijf voor Autodealers. Ben jij een Medior of Senior Software Developer? Heb je ervaring met PHP, JavaScript of Python? Vaste baan: Java.Developer Software HBO €3.000 - €5.200 Bij ons op de werkvloer is er een positieve en informele sfeer. Naast een goede begeleiding en een enthousiaste klantenkring biedt deze werkgever een prettige omgeving met zeer afwisselende werkzaamheden. Houd jij van aanpakken en denk je dat je deze uitdaging aankunt? Dan zoeken wij jou! Zij werken voor grote klanten. Zij doen omvangrijke projecten die we bij deze werkgever op kantoor realiseren (geen detachering). Zij werken met state-of-the-art

Bekijk vacature »

Freelance Fullstack Java Developer

Functieomschrijving Voor een opdrachtgever in omgeving Rotterdam zijn wij op zoek naar ervaren Fullstack JAVA Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid hebben

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

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

26/04/2024 22:35:13
 
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.