我的mySQL表有一个select distinct order, box from db.table
where scantime <= @maxTime
group by ordernumber, boxnumber
having min(scantime) >= @myDesiredMinimumTime
列,它使用TIMESTAMP类型。在表格中,当我使用可视化编辑器时,时间戳看起来像func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
NMAApplicationContext.setAppId(yourAppID, appCode: yourAppCode, licenseKey: yourLicenseKey)
return true
}
。
在我的PHP中,我试图仅在一周之前获得具有date_added
的行。所以,我正在做这样的事情:
2017-06-17 20:08:58
date_added
返回一个纪元时间,如:1498748730
如果我像这样直接进行mySQL查询:
从$weekago = strtotime("-1 week");
$sql = "SELECT * from myTable where date_added >= $weekago";
中选择*,其中date_added&gt; 1498748730
在任何一种情况下,我只是返回所有行(是的,有些行在一周以前有一个date_added)。
时间戳格式不匹配的问题是什么?
答案 0 :(得分:3)
尝试使用此查询:
SELECT * FROM myTable WHERE date_added >= NOW() - INTERVAL 1 WEEK
您当前的尝试是将纪元时间(以秒为单位)与日期列进行比较。这没有任何意义。正如@HuyTrịnh正确建议的那样,您可以将date_added
包裹在UNIX_TIMESTAMP
中以将其转换为自纪元以来的秒数。但纯MySQL中的这种方法并不是那么好:
SELECT *
FROM myTable
WHERE UNIX_TIMESTAMP(date_added) >= UNIX_TIMESTAMP() - 7*24*60*60
答案 1 :(得分:2)
试试这个:
$weekago = strtotime("-1 week");
$sql = "SELECT * from myTable where UNIX_TIMESTAMP(date_added) >= $weekago";
这会将date_added转换为时间戳,因此2参数将具有相同的格式