mySQL / PHP查询不受日期限制

时间:2017-06-30 15:12:07

标签: php mysql

我的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)。

时间戳格式不匹配的问题是什么?

2 个答案:

答案 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参数将具有相同的格式