我希望在月份和年份之间的条件中选择BOOL TargetIs32Bit(HANDLE hProcess)
{
BOOL bResult;
#ifdef _WIN64
bResult = FALSE;
IsWow64Process(hTargetHandle, &bResult);
#else
typedef void (WINAPI *LPFN_GSI)(SYSTEM_INFO*);
LPFN_GSI lpGetSystemInfo = GetProcAddress(GetModuleHandleW(L"kernel32"), "GetNativeSystemInfo");
if (!lpGetSystemInfo) lpGetSystemInfo = &GetSystemInfo;
SYSTEM_INFO sysInfo = {0};
lpGetSystemInfo(&sysInfo);
switch (sysInfo.wProcessorArchitecture)
{
case PROCESSOR_ARCHITECTURE_AMD64:
case PROCESSOR_ARCHITECTURE_IA64:
{
bResult = FALSE;
IsWow64Process(hTargetHandle, &bTargetIs32Bit);
break;
}
default:
bResult = TRUE;
break;
}
#endif
return bResult;
}
...
wchar_t lpFilename[MAX_PATH];
if (TargetIs32Bit(hTargetHandle))
lstrcpy(lpFilename, L"C:\\CodeInjectTest32.dll");
else
lstrcpy(lpFilename, L"C:\\CodeInjectTest64.dll");
// inject DLL ...
。在我的数据库中有月份和年份的字段名称,用于月份和年份的商店生产输入。现在我想在2015年12月至2016年8月期间进行搜索产品输入
这是我的SQL query
sql
但结果返回SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12'
AND p.years>='2015') AND (p.months <='8' AND p.years<='2016)) ;
,我知道我的查询不正确,但如何纠正呢?
答案 0 :(得分:0)
为什么不将日期列设计为日期?
如果您想保留当前的设计,请尝试以下方法:
SELECT *
FROM tbl_produce
WHERE status = 0
AND concat(years, if(months > 9, months, concat('0', months)))
BETWEEN '201512' AND '201608'
OR
SELECT *
FROM tbl_produce
WHERE status = 0
AND (
(years = 2015 AND months = 12)
OR
(years = 2016 AND months < 9)
)
答案 1 :(得分:0)
您的SQL查询正在寻找结果,其中p.months等于12和8,并且p.years等于2015年和2016年。
要获得您正在寻找的结果,请将两组括号之间的AND替换为OR,如下所示:
SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12' AND p.years = '2015') OR (p.months <='8' AND p.years = '2016));
如果我有权访问你的表结构,我会自己运行测试来确认,但我相信这是你正在寻找的结果的正确语法。