postgresql日期和时间比较
DB里保存到时分秒,需要和年月日比较
selectdate_trunc('day',now())=date_trunc('day',date('20200615'))--true
selectdate_trunc('day',date('20200611'))--2020-06-1100:00:00+00
select*fromuserswheredate_trunc('day',birthday)=date_trunc('day',date('20200401'))
db里存储date或者timestamp字段
需要和字符串比较时,建议先使用to_date或者to_timestamp转换。
测试发现pgsql往类型为timestamp的列插入字符串数据,或者用date/timestamp类型的数据跟字符串数据作比较时,会自动转换成对应的date/timestamp。
oracle未测试。
selectto_date('2019-01-1518:33:41','yyyy-MM-ddhh24:mi:ss');
selectto_timestamp('2019-01-1518:33:41','yyyy-MM-ddhh24:mi:ss');
selectto_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')=to_timestamp('2019-01-1500:00:00','yyyy-MM-ddhh24:mi:ss');
>>true
selectto_timestamp('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')-to_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss');
>>"18:33:42"
selectto_timestamp('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')='2019/01/15';
>>false
selectto_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')='2019/01/15';
>>true
selectto_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')='2019-01-15';
>>true
selectto_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')='20190115';
>>true
selectto_date('2019-01-1518:33:42','yyyy-MM-ddhh24:mi:ss')='2019/01-15';
>>ERROR:date型の入力構文が不正です:"2019/01-15"
SELECT
time,
to_timestamp('2011-12-1314:15:16','yyyy-MM-ddhh24:mi:ss'),
time=to_timestamp('2011-12-1314:15:16','yyyy-MM-ddhh24:mi:ss'),
time,to_date('2011-12-1314:15:16','yyyy-MM-ddhh24:mi:ss'),
time=to_date('2011-12-1314:15:16','yyyy-MM-ddhh24:mi:ss')
FROMpublic.productwhereid=21;
>>"2011-12-1314:15:16+09"
>>"2011-12-1314:15:16+09"
>>true
>>"2011-12-1314:15:16+09"
>>"2011-12-13"
>>false
|