0

曜日と時刻をデータベースにのみ保存する0000-00-00 00:00:00と、期待されるデータは次のようMonday 8:30 AMになります。

ストアド プロシージャ

    CREATE DEFINER=`admin`@`192.168.21.%` PROCEDURE `AddDay`(d DATETIME)
BEGIN
    INSERT INTO `tbl_days`(`day`) VALUES(d);
END

C# コード:

StringBuilder sb = new StringBuilder();
            sb.Append(cmbDay.Text.Trim()).Append(" ");
            sb.Append(cmbHour.Text.Trim()).Append(":");
            sb.Append(cmbMinutes.Text.Trim()).Append(" ");
            sb.Append(cmbTime.Text.Trim());

            string day = sb.ToString();

データ型を から に変更すると問題は解決DATETIMEVARCHARます。この問題を解決するにはどうすればよいですか? または私はちょうど使用する必要がありますVARCHARか?

4

1 に答える 1

3

この値をデータベースに保存する必要はありません。次のように、SQL ではいつでも曜日を取得できることに注意してください。

  • DAYNAME次のコマンドを使用します。

    SELECT DAYNAME(day) FROM tbl_days

  • DAYFORMAT次のコマンドを使用します。

    SELECT DATE_FORMAT(day, '%W');

詳細については、日付と時刻関数の MySQL リファレンス マニュアルを参照してください。

[編集]:day列の型を として宣言するとTIMESTAMPINSERTクエリは次のようになります。

INSERT INTO tbl_days (day) VALUES (NOW());

または、次のような明示的な入力があります。

SET @date = CONCAT($year,'-',$month,'-',$day,'-',$hour,'-',$minute,'-',$second);
INSERT INTO tbl_days (day) VALUES (STR_TO_DATE(@date,'%Y-%c-%e-%k-%i-%s'));
于 2013-05-09T01:20:08.723 に答える