अपडेट:मुझे लगता है https://stackoverflow.com/a/21330407/480943 एक बेहतर उत्तर है।
आप इसे कुछ तारीख अंकगणित के साथ कर सकते हैं:
SELECT some_columns,
DATE_ADD(
DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00"),
INTERVAL IF(MINUTE(the_date) < 30, 0, 1) HOUR
) AS the_rounded_date
FROM your_table
स्पष्टीकरण:
-
DATE_FORMAT :
DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00")
छोटी की गई तारीख को निकटतम घंटे में लौटाता है (मिनट और दूसरे भाग को शून्य पर सेट करता है)। -
MINUTE :
MINUTE(the_date)
दिनांक का मिनट मान प्राप्त करता है। -
IF :यह एक सशर्त है; यदि पैरामीटर 1 में मान सत्य है, तो यह पैरामीटर 2 देता है, अन्यथा यह पैरामीटर 3 देता है। तो
IF(MINUTE(the_date) < 30, 0, 1)
का अर्थ है "यदि मिनट का मान 30 से कम है, तो 0 लौटाएं, अन्यथा 1 लौटाएं"। इसे हम राउंड करने के लिए उपयोग करने जा रहे हैं -- यह वापस जोड़ने के लिए घंटों की संख्या है। -
DATE_ADD :यह परिणाम में राउंड के लिए घंटों की संख्या जोड़ता है।