---
title: "Går det att jämföra BARA datumet i en datetime?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/167071-går-det-att-jämföra-bara-datumet-i-en-datetime"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2007-12-08T14:43:59.000Z"
updated: "2007-12-08T22:13:12.000Z"
replies: 12
views: 793
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/167071-går-det-att-jämföra-bara-datumet-i-en-datetime"
---

# Går det att jämföra BARA datumet i en datetime?

## #1 — aasah, 2007-12-08T14:43Z

Jag har en databastabell som innehåller pussel. En av kolumnerna är en datetime som talar om när pusslet kom dit. Jag skriver en fråga i SQL som plockar ut alla pussel så att de nyaste hamnar först, så långt funkar det utmärkt. :) 

Men... Nu vill jag lägga in en header i utskriften: 
**These puzzles have been available since \<datum\>**
Denna ska alltså bara stå EN gång per datum (eftersom vanligtvis flera pussel adderas samma dag). Jag vet hur jag ska få in det i whileslingan, det som strular till det är datumhanteringen.

1) Kan jag jämföra bara datumdelen (dvs strunta i tidsinfon) mellan två datetimes?

2) Hur skriver jag enklast ut bara datumdelen?

3) Varför är inte två stycken '2007-11-09 00:00:00' lika?

Tacksam för svar...

Permalänk: https://www.webforum.nu/p/167071

## #2 — Fuel, 2007-12-08T14:55Z

```php
<?php
$date = "";
while ($row = mysql_fetch_array($sql))
{
    if (date("Y-m-d",$row['date']) != $date)
    {
        echo "<h2>" . $row['date'] ."</h2>";
        $date = date("Y-m-d",$row['date']);
    }
    echo "<p>" . $row['game'] ."</p>";
}
?>
```

 

Nu är jag bakis så det kan mkt väl vara tokfel    :o

Permalänk: https://www.webforum.nu/p/2059720

## #3 — tydal, 2007-12-08T14:59Z

Om du skriver så här i din mysql-query i stället för bara namnet på din datetime-kolumn så får du bara ut datumdelen:

SELECT LEFT(din_datetime-kolumn, 10) AS datum

Permalänk: https://www.webforum.nu/p/2059722

## #4 — aasah, 2007-12-08T15:17Z

> **tydal skrev:**
>
> Om du skriver så här i din mysql-query i stället för bara namnet på din datetime-kolumn så får du bara ut datumdelen:
> 
> SELECT LEFT(din_datetime-kolumn, 10) AS datum

Hum?   :q 

> **SQL skrev:**
>
> weird..You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT LEFT(Pok, 10) AS datum, Po, Pi, Pk FROM T' at line 1

 på följande fråga:

```php
$sql = "SELECT Pi, Pt, Pb, SELECT LEFT(Pok, 10) AS datum, Po, Pi, Pk  
        FROM P natural join T natural join K  
        WHERE ....
        ORDER BY P.Pok DESC";
```

Varför gick inte denna smidiga lösning?

Permalänk: https://www.webforum.nu/p/2059726

## #5 — aasah, 2007-12-08T15:31Z

Fuel, ditt förslag leder till ett fel om ett "not well formed date", vilket gör att datumet kommer ut som något som inträffade på tidigt 70-tal, och jag kan försäkra att det datumet saknar varje likhet med hur det borde se ut...

Permalänk: https://www.webforum.nu/p/2059732

## #6 — Fuel, 2007-12-08T15:58Z

ja.. det är nog skrot .. såna här dagar ska man bara vila  :x

Permalänk: https://www.webforum.nu/p/2059741

## #7 — aasah, 2007-12-08T16:29Z

Hum, jag lyckades få tag i bara datumdelen mha hjälpfunktion, men de är **fortfarande**  inte lika???

```php
function getDatePart($dateTime) {
	$parts = explode(" ", $dateTime);
	return $parts[0];
}
//....
$dateOld = "";
while ($rowJS = mysql_fetch_array($resJS)) {
	$dateCurr = getDatePart($rowP['datum']);
	if ($dateCurr != $dateOld) {
		$dateOld = $dateCurr;
		echo "<h2>These puzzles have been available since $dateCurr</h2>";
	}
//....
```

Men det skumma är att denna header alltid kommer ut, även när datumen ÄR lika???   :q (Strunt samma - tar det till en egen tråd.)

Permalänk: https://www.webforum.nu/p/2059745

## #8 — sl0k, 2007-12-08T16:40Z

För att enbart få datumen från en DATETIME

```
SELECT DATE_FORMAT(datetime_kolumn, "%Y-%m-%d") as datum FROM ...
```

[DATE_FORMAT()](http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format)

Permalänk: https://www.webforum.nu/p/2059749

## #9 — aasah, 2007-12-08T17:03Z

> **sl0k skrev:**
>
> För att enbart få datumen från en DATETIME
>
>
> ```
> SELECT DATE_FORMAT(datetime_kolumn, "%Y-%m-%d") as datum FROM ...
> ```
>
> 
> 
> [DATE_FORMAT()](http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format)

Märkligt... Ger samma felmeddelande som tydals förslag? Även testat med ' runt datumformatet, ingen skillnad.

> **SQL skrev:**
>
> weird..You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT DATE_FORMAT(Pok, "%Y-%m-%d") AS datum, Po, Pi, Pk ' at line 1

Min explode plockar ut rätt del, men jämförelsen mellan två lika datum funkar inte. Headern skrivs fortfarande ut för alla pussel.

Permalänk: https://www.webforum.nu/p/2059751

## #10 — Gein, 2007-12-08T17:15Z

SELECT i SELECT kom väl först i 5.0, eller har jag fel?
Vilken MySQL-version kör du?

Permalänk: https://www.webforum.nu/p/2059752

## #11 — aasah, 2007-12-08T17:19Z

Antar att det är detta du menar? MySQL klientversion: 5.0.38

För övrigt: Tack för kommentaren om SELECT i SELECT! Äntligen klarnade det i denna hjärna... jag hade ju glömt parenteserna runt! Följande funkar:

```php
SELECT... (SELECT DATE_FORMAT(datetime_kolumn, "%Y-%m-%d")) as datum ....
```

Permalänk: https://www.webforum.nu/p/2059754

## #12 — LarsG, 2007-12-08T18:16Z

Det behövs inget extra select

```
 SELECT... DATE_FORMAT(datetime_kolumn, '%Y-%m-%d')
```

> SELECT i SELECT kom väl först i 5.0, eller har jag fel?

Mm, 4.1 var det.

Permalänk: https://www.webforum.nu/p/2059759

## #13 — aasah, 2007-12-08T22:13Z

Tack för alla svar! :birp

Permalänk: https://www.webforum.nu/p/2059807

---

Tråden på webben: https://www.webforum.nu/amne/php/167071-går-det-att-jämföra-bara-datumet-i-en-datetime
