sql - PostgreSQL:如何使用包含时间戳的字符列

标签 sql regex postgresql select timestamp

我正在使用一个 PostgreSQL 数据库,该数据库包含一个包含文本时间戳的字符列,格式为“Prefix: Wed May 7, 11:30AM-1:30PM”。没有年份,假定所有日期都在当年。我意识到如果这些数据位于具有时间戳或日期和时间类型的列中,那么使用这些数据会更容易,但我无法控制数据库格式,我必须使用其中的内容。

我需要做的是编写一个 SELECT,它只返回具有特定前缀值(例如“public”与“private”)和晚于当前时间/日期的时间/日期的记录。这是一个相对较大的数据库,大约有 100,000 条记录,我需要能够快速进行搜索。任何人都可以就实现这一目标的最佳方法提供建议吗?我考虑过使用正则表达式或 to_date() 和 substring() 的组合,但我不确定如何继续。

额外的问题:有没有一种方法可以使用此字段按日期和时间顺序排列记录?

最佳答案

我认为这样的事情会起作用:

select split_part(col, ':', 1) as prefix,
       to_timestamp(to_char(now(), 'YYYY') || 
                    split_part(col, ':', 2),
                    'YYYY Dy Mon dd, HH:MIAM'
                   ) as DateTime

关于sql - PostgreSQL:如何使用包含时间戳的字符列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25249988/

相关文章:

ruby-on-rails - Ruby 正则表达式的价格

regex - 使用 sed 提取字符串的最后部分

java - 找不到适用于 jdbc :postgresql but I have install driver 的合适驱动程序

sql - 选择在 PostgreSQL 中适用某些条件的搜索后进行购买的用户?

c# - 选择字符串中的上一个和下一个单词

使用 UNIX_TIMESTAMP 的 mySQL 查询返回 0 结果

sql - PostgreSQL 中将数据从 JSONB 类型转换为 Array 类型

postgresql - PostgreSQL 单查询执行不是原子的吗?

php - 1064 mySQL 错误 : AS salary ON resume. jobsalaryrange = salary.id ' 在第 6 行

sql - 艰苦学习SQL-练习1. sqlite3 ex1.db <ex1.sql无法正常工作