Sql 需要将unix转换为日期,但某些值已采用日期格式
我的数据库中有一个字段,其中90%的值是毫秒unix时间戳,但约5%的值为null,5%为实际日期戳,但该字段是文本字段 我正在尝试使用以下方法转换日期:Sql 需要将unix转换为日期,但某些值已采用日期格式,sql,postgresql,Sql,Postgresql,我的数据库中有一个字段,其中90%的值是毫秒unix时间戳,但约5%的值为null,5%为实际日期戳,但该字段是文本字段 我正在尝试使用以下方法转换日期: cast(to_timestamp(cast(date_field as bigint)/1000) as date) 问题是,已经是时间戳(文本字段格式)的日期字段把我搞砸了,因为它们无法转换为bigint。所有像这样的值都以“2016-”开头,所以我做了一个查询来排除它们,但它们仍然存在 要排除这些内容的查询: Select disti
cast(to_timestamp(cast(date_field as bigint)/1000) as date)
问题是,已经是时间戳(文本字段格式)的日期字段把我搞砸了,因为它们无法转换为bigint。所有像这样的值都以“2016-”开头,所以我做了一个查询来排除它们,但它们仍然存在
要排除这些内容的查询:
Select distinct
date
from table1
where date<>'2016%'
你可以
比如:
where date like '20%' --for years after 2000 (there isnt yet a unix timestimp that starts with 2 )
or date like '19%' (there isnt yet a unix timestimp that starts with 19 )
你可以
比如:
where date like '20%' --for years after 2000 (there isnt yet a unix timestimp that starts with 2 )
or date like '19%' (there isnt yet a unix timestimp that starts with 19 )
因此,您可以将时间转换为毫秒,如日期:
SELECT FROM_UNIXTIME(t.date/1000,'%Y-%m-%d %H:%i:%s') FROM table1 t WHERE t.date NOT LIKE '2016-%' AND t.date IS NOT NULL;
因此,您可以将时间转换为毫秒,如日期:
SELECT FROM_UNIXTIME(t.date/1000,'%Y-%m-%d %H:%i:%s') FROM table1 t WHERE t.date NOT LIKE '2016-%' AND t.date IS NOT NULL;
我的问题是,我试图使用这样的过滤器,但它们不工作。where date='20%'和where date'20%'都不过滤任何内容,即使我在显示结果时看到了这些值。请改用“like”或“not like”,您只能将“%”与like语句一起使用。我的问题是,我正在尝试使用类似的过滤器,但它们不起作用。where date='20%'和where date'20%'都不过滤任何内容,即使我在显示结果时看到了这些值。请改用'like'或'not like',您只能在like语句中使用“%”