2013-06-26 6 views
-3

На моей веб-странице У меня есть 2 текстовых блока, из которых я ввожу Год и Месяц. Можете ли вы рассказать мне запрос mysql, который получит количество дней в этом месяце. Я хочу использовать это в своем коде, и в зависимости от того количества дней мне нужно делать другие вещи. Я искал и нашел что-то вроде этогоРассчитать количество дней в месяце

SELECT DAY(LAST_DAY('2012-02-1')); 

Это мой код за

public void search(object sender, EventArgs e) 
     { 
      string cnnString = "Server=localhost;Port=3307;Database=leavesystem;Uid=root;Pwd=ashish"; 
      MySqlConnection cnx = new MySqlConnection(cnnString); 
      cnx.Open(); 
      string cmdText = "Select DAY(LAST_DAY(CAST(CONCAT(@'" + year.value +"', '-', @'"+ month.value+"', '-', 1) AS DATE))) "; 
      MySqlCommand cmd = new MySqlCommand(cmdText, cnx); 

     } 

Это дает мне количество дней, но у меня нет даты. У меня есть 2 текстовых поля год и месяц. Можете ли вы дать мне запрос на это?

+0

Как вы думаете, это лучше сделать в вашем «коде-за»? Я думаю, вы используете 'C#'. – KaeL

+0

Итак, вы хотите зависеть от подключения к базе данных для вычисления чего-то подобного в вашем коде? –

+0

Да, я работаю в asp.net. Фактически я создаю ретранслятор динамически для своей веб-страницы, и я не знаю количества столбцов. Поэтому, когда пользователь вводит год и месяц, я хочу получить количество дней в этом месяце, а затем создать столбцы! –

ответ

1

Предположив вас есть два параметра:

SET @y = 2013; 
SET @m = 5; 

@y будет годом, и @m будет месяц.

Поскольку каждый месяц имеет свой первый день, вы можете установить день до 1 как постоянной

SELECT DAY(LAST_DAY(CAST(CONCAT(@y, '-', @m, '-', 1) AS DATE))); 

Кстати, я использую переменные сессии, я думаю, что вы будете использовать INPUT параметры, я думаю, он будет таким же.

EDIT 1

Если месяц прошел в запросе MONTHNAME, вы можете изменить его в code-behind уже. Но если вы настаиваете, вот запрос, чтобы получить MONTHNUMBER:

SET @m = MONTH(STR_TO_DATE('June', '%M')); 

Вот окончательный запрос:

SET @y = 2013; 
SET @m = 'June'; 

SELECT DAY(LAST_DAY(CAST(CONCAT(@y, '-', MONTH(STR_TO_DATE(@m, '%M')), '-', 1) AS DATE))); 
+0

Спасибо KaeL. Ваш код работает нормально. Сейчас я работаю над генерацией ретранслятора. Надеюсь, что это работает. Cheers :) –

+0

Я вижу. Я был бы счастлив, если вы примете мой ответ. Просто нажмите галочку в верхней левой части моего ответа :) – KaeL

+0

Сделал это bro. Эй, вы знакомы с ретранслятором. Я пробовал, но не понимаю. Если вы можете, пожалуйста, помогите мне с этим. Вот мой пост http://stackoverflow.com/questions/17314479/generate-repeater-depending-on-number-dynamically-generated –

0

Что делать, если вы даете по умолчанию выбран 01 первое число каждого месяца в запросе, не знаю вашего языка программирования, но только для того, чтобы дать представление

var date_vaiable=year_variable+"-"month_variable+"-01"; //+ sign is for concat concept 

SELECT DAY(LAST_DAY(date_vaiable));