我有一张桌子,上面有关于贸易商品的信息,有点物流。它有一个名为“ arriving_date”的列,其中包含到达日期的格式为“ 30.06.2019”。
现在,我需要输入一个仅显示尚未到达的货物的请求,换句话说,到达日期为> 30.06.2019。所以我要输入我的请求
export class StepComponent implements OnInit, OnChanges {
@Input() step: Steps;
@ViewChild('dynamicComponent', { read: ViewContainerRef }) container: ViewContainerRef;
constructor(private compiler: Compiler) { }
ngOnInit() { }
ngOnChanges(change: SimpleChanges) {
if (this.step && change.step.currentValue !== change.step.previousValue) {
this.addComponent(this.step);
}
}
addComponent(step: Steps) {
const cmp = Component({ template: step.formattedText })(class DynamicComponent {
stepFormGroup: FormGroup;
constructor(
) {
// Some Component related code
}
});
const meta = NgModule({
imports: [
CommonModule,
FormsModule,
MaterialModule,
ReactiveFormsModule,
LibSharedModule,
BrowserModule,
BrowserAnimationsModule
],
declarations: [cmp]
})(class DynamicModule {
});
this.compiler
.compileModuleAndAllComponentsAsync(meta)
.then(factories => {
const factory = factories.componentFactories.find(component => component.componentType === cmp);
this.container.remove();
this.container.createComponent(factory);
});
}
}
但是此请求仅向我显示空白字段。我想我已经猜到了原因。显然,它无法以这种格式比较数字。但是我不确定该如何比较日期。感谢您的帮助。
答案 0 :(得分:1)
假设到达日期只是一个字符串(而不是实际日期)
SELECT *
FROM traffic
WHERE str_to_date(arriving_date, '%d.%m.%Y') > now()
OR arriving_date is null;
这会将到达日期字符串转换为日期,并将其与当前日期和时间进行比较。
我还添加了一个检查,以确保到达时将其设置为null(即未设置)。
请注意,对列中的值使用函数会使所有查询运行全表扫描。由于您的日期格式不变,因此无法解决。
答案 1 :(得分:1)
感谢大家的帮助!
我设法通过以下方式解决问题: 1.我将到达日期数据类型更改为“日期”(它是整数) 2.我将日期从“ dd.mm.yyyy”格式重写为“ yyyy-mm-dd”,不确定是否重要。 3.最终请求如下所示:
SELECT *
FROM traffic
WHERE arriving_date > NOW()
现在可以正常使用了。
答案 2 :(得分:0)
假设到达日期列是一个porper日期数据类型,请尝试将日期字符串转换为正确的日期
SELECT *
FROM traffic
WHERE arriving_date > str_to_date('30.06.2019', '%d.%m.%Y')
或者两个日期都可以