2017-08-24 22 views
0

で日付に時間を追加、の一例として、CURRENT_DATEを使用してみましょう:は私が日付を返すクエリを持っているMySQLのクエリ結果

SELECT 
current_date(); 

私のようなものを返すために、このクエリを変更したい:

Date   | Hour 
2017-08-24  0 
2017-08-24  1 
2017-08-24  2 
2017-08-24  3 
2017-08-24  4 
... 

23.私は毎日異なる日付を持ち、すべての日付と時間の表を作成しないようにするため、これが必要です。

答えて

0

ご返信ありがとうございます。私はこの手順を試しましたが、もっと簡単な解決策で解決しました。私はsoltutionは次のようになり、私の例では0から23までの数字とAUXILIARテーブルaux_hourを作成:

は CURRENT_DATE、aux_hour FROM 時間 を選択します。

それは私のために働いたが、あなたの答えに手続きを示唆したので、私はそれらについてもっと学んだので、もう一度あなたに感謝する。

+0

これも同様に機能します。あなたを助けてくれてうれしいです。 –

1

あなたができることは、指定された日付からすべての時間を生成するストアドプロシージャを作成することです。例:

delimiter $$ 
CREATE PROCEDURE GetAllHoursInDay 
(
    in in_date date 
) 
BEGIN 
SELECT convert (in_date, datetime) 
UNION 
SELECT in_date + interval 1 hour 
UNION 
SELECT in_date + interval 2 hour 
UNION 
SELECT in_date + interval 3 hour 
UNION 
SELECT in_date + interval 4 hour 
UNION 
SELECT in_date + interval 5 hour 
UNION 
SELECT in_date + interval 6 hour 
UNION 
SELECT in_date + interval 7 hour 
UNION 
SELECT in_date + interval 8 hour 
UNION 
SELECT in_date + interval 9 hour 
UNION 
SELECT in_date + interval 10 hour 
UNION 
SELECT in_date + interval 11 hour 
UNION 
SELECT in_date + interval 12 hour 
UNION 
SELECT in_date + interval 13 hour 
UNION 
SELECT in_date + interval 14 hour 
UNION 
SELECT in_date + interval 15 hour 
UNION 
SELECT in_date + interval 16 hour 
UNION 
SELECT in_date + interval 17 hour 
UNION 
SELECT in_date + interval 18 hour 
UNION 
SELECT in_date + interval 19 hour 
UNION 
SELECT in_date + interval 20 hour 
UNION 
SELECT in_date + interval 21 hour 
UNION 
SELECT in_date + interval 22 hour 
UNION 
SELECT in_date + interval 23 hour; 
END$$ 
DELIMITER ; 

call GetAllHoursInDay(current_date()); 

ない私の知る限り、MySQLは関数は、テーブルを返すことができないので、あなたがGetAllHoursInDay * FROM SELECTフォームの何かを持つことができないということ。ただし、一時的なテーブルを作成し、上記の手順で入力してSELECT *を実行することで回避できます。

関連する問題