При дальнейшей мысли, что-то вроде этого должно быть то, что вы хотите:
CREATE TEMPORARY TABLE DateSummary1 ( datenew timestamp ) SELECT DISTINCT(DATE(datecreated)) as datenew FROM users;
CREATE TEMPORARY TABLE DateSummary2 ( datenew timestamp, number int ) SELECT DATE(datecreated) as datenew, count(*) AS number FROM users
WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW())
GROUP BY DATE(datecreated) ORDER BY datecreated ASC;
SELECT ds1.datenew,ds2.number FROM DateSummary1 ds1 LEFT JOIN DateSummary2 ds2 on ds1.datenew=ds2.datenew;
Это дает вам все даты в первой таблице и сводные данные count
во второй таблице. Возможно, вам придется заменить ds2.number
на IF(ISNULL(ds2.number),0,ds2.number)
или что-то подобное.
Вы можете использовать объединение:
typedef union bitsetConvertor {
bitset bs;
uint16_t i;
} bitsetConvertor;
bitsetConvertor convertor;
convertor.i = myInt;
bitset bs = convertor.bs;
Или вы можете использовать приведение:
bitset bs = *(bitset *)&myInt;
Или вы можете использовать анонимную структуру в объединении:
typedef union morder {
struct {
unsigned int targetRegister : 3;
unsigned int targetMethodOfAddressing : 3;
unsigned int originRegister : 3;
unsigned int originMethodOfAddressing : 3;
unsigned int oCode : 4;
};
uint16_t intRepresentation;
} bitset;
bitset bs;
bs.intRepresentation = myInt;
Пожалуйста, пожалуйста, не используйте союз. Или, скорее, поймите, что вы делаете, используя союз - желательно до того, как вы его используете.
Как вы можете видеть в этом ответе, не полагайтесь на битовые поля, чтобы быть переносимыми. Специально для вашего случая порядок битовых полей в структуре зависит от реализации.
Теперь, если ваш вопрос был, как вы можете распечатать структуру битового поля как int, для случайного частного обзора, конечно, союзы великолепны. Но вы, похоже, хотите получить «фактическое значение» ваших битовых полей.
Итак: если вы работаете только над этой комбинацией машина/компилятор, и вам не нужно полагаться на математическое значение int, если это имеет смысл, вы можете использовать союзы. Но если вы можете перенести свой код или если вам нужно «фактическое значение» int, вам нужно написать код для обработки битами, чтобы получить битовые поля в правильные биты int.
Конечно - просто используйте объединение. Затем вы можете получить доступ к своим данным либо как 16-битное int, либо как отдельные битовые поля, например.
#include <stdio.h>
#include <stdint.h>
typedef struct {
unsigned int targetRegister : 3;
unsigned int targetMethodOfAddressing : 3;
unsigned int originRegister : 3;
unsigned int originMethodOfAddressing : 3;
unsigned int oCode : 4;
} bitset;
typedef union {
bitset b;
uint16_t i;
} u_bitset;
int main(void)
{
u_bitset u = {{0}};
u.b.originRegister = 1;
printf("u.i = %#x\n", u.i);
return 0;
}