Sql 在postgres中将日期格式从varchar更改为yyyy mm dd

Sql 在postgres中将日期格式从varchar更改为yyyy mm dd,sql,postgresql,Sql,Postgresql,我正在尝试将日期格式从dd/mm/yyyy转换为yyyy-mm-dd,类型为varchar,因为我的TblFacultyMaster表中的格式为yyyy-mm-dd,教师数据表中的格式为dd/mm/yyyy 我想匹配常见的DOB,但两个表中的格式不同 请帮忙 提前谢谢 SELECT to_char("date", 'YYYY/MM/DD') "public".teacher_details.teacher_id, "public".teacher_details.first_nam

我正在尝试将日期格式从dd/mm/yyyy转换为yyyy-mm-dd,类型为varchar,因为我的TblFacultyMaster表中的格式为yyyy-mm-dd,教师数据表中的格式为dd/mm/yyyy 我想匹配常见的DOB,但两个表中的格式不同

请帮忙

提前谢谢

SELECT
  to_char("date", 'YYYY/MM/DD') 
  "public".teacher_details.teacher_id,
  "public".teacher_details.first_name,
  "public"."TblFacultyMaster"."MastCode",
  "public"."TblFacultyMaster"."MastName",
  "public"."TblFacultyMaster"."DOB",
  "public".teacher_details.dob
FROM
  "public".teacher_details
INNER JOIN "public"."TblFacultyMaster" ON "public"."TblFacultyMaster".teacher_id = "public".teacher_details.teacher_id

未测试

PostgreSQL在使用to_date()函数时会自动将其带到yyyy MM dd。见下文:

SELECT
  to_char(to_date(dob, 'dd/mm/yyyy'),'YYYY/MM/DD'),  
  "public".teacher_details.teacher_id,
  "public".teacher_details.first_name,
  "public"."TblFacultyMaster"."MastCode",
  "public"."TblFacultyMaster"."MastName",
  "public"."TblFacultyMaster"."DOB",
  "public".teacher_details.dob
FROM
  "public".teacher_details
INNER JOIN "public"."TblFacultyMaster" ON "public"."TblFacultyMaster".teacher_id = "public".teacher_details.teacher_id
这将导致以下情况:

我希望这有帮助。干杯

编辑:

好吧,我明白你想做什么,也许这会奏效:

select to_date(dob, 'dd/mm/yyyy') as myDate;

to_char
无法将字符串转换为字符串,请尝试将日期类型转换为varchar
datecolumn
此处我假设“date”是您的该列,请尝试 如下图所示:

SELECT
  to_date("public".teacher_details.dob, 'dd/MM/yyyy'),
  "public".teacher_details.teacher_id,
  "public".teacher_details.first_name,
  "public"."TblFacultyMaster"."MastCode",
  "public"."TblFacultyMaster"."MastName",
  "public"."TblFacultyMaster"."DOB",
  "public".teacher_details.dob
FROM
  "public".teacher_details
INNER JOIN "public"."TblFacultyMaster" ON "public"."TblFacultyMaster".teacher_id = "public".teacher_details.teacher_id
WHERE to_date("public".teacher_details.dob, 'dd/MM/yyyy') = "public"."TblFacultyMaster".dob

我把一些东西放在一起进行匹配,而DOB在匹配tabletype是varchar,format是dd/mm/yyyyyd时起着重要作用。你是说在varchar列中存储日期值吗?为什么?停止将日期存储为字符串。使用日期类型。如果“高级”将日期存储在varchar列中,则他不是“高级”错误:语法错误位于或接近“to_char”行2:to_char(to_Date(“日期”,“dd/mm/yyyy”),“yyyy/mm/dd”)^语法正确。日期字段的字段名是什么?和post full语句和错误文本如果您的列名是dob,为什么要使用“date”?字段名是dob@NIYOUT dob的类型是varchar,我想将一个表的dob与另一个表的dob匹配,但格式都不同,这就是为什么我无法匹配两个表的dob@niyouERROR:语法错误在或接近“to_date”第2行:截止日期(“2018年1月16日”,“dd/mm/yyyy”)为myDate奇怪,您使用的是什么版本的postgresql?版本9.6@Daefect91我的列名是dob,我也需要更改其格式,您是否介意将您现在正在测试的完整脚本发送给我?当您在单独的查询中仅使用我的行时,它是否有效?缺少
,并且应该真正使用
“date”::date
SELECT
  to_char("date"::date, 'YYYY/MM/DD') as date, 
  "public".teacher_details.teacher_id,
  "public".teacher_details.first_name,
  "public"."TblFacultyMaster"."MastCode",
  "public"."TblFacultyMaster"."MastName",
  "public"."TblFacultyMaster"."DOB",
  "public".teacher_details.dob
FROM
  "public".teacher_details
INNER JOIN "public"."TblFacultyMaster" ON "public"."TblFacultyMaster".teacher_id = "public".teacher_details.teacher_id