从 php 到 postgresql 的日期字符串

Posted

技术标签:

【中文标题】从 php 到 postgresql 的日期字符串【英文标题】:Date String from php to postgresql 【发布时间】:2013-08-19 13:35:04 【问题描述】:

我的客户用如下日期字符串证明我

Tue Nov 30 00:00:00 GMT+0400 1965

请问我怎样才能将这种格式插入到 postgresql 日期列中,或者我将不得不这样做并使用子字符串来编译一个字符串

Nov 30 1965

请有人帮助我时间很紧。

提前致谢。

【问题讨论】:

【参考方案1】:

如果您的日期中没有时间戳,这对您来说是可能的:

select to_timestamp('Tue Nov 30 00:00:00 1965', 'DY Mon DD HH24:MI:SS YYYY')

所以我认为你必须从你的字符串中创建一个新的:

select
    to_timestamp(substring(dt from 0 for 20) || substring(dt from 29), 'DY Mon DD HH24:MI:SS YYYY')
from (select 'Tue Nov 30 00:00:00 GMT+0400 1965'::text as dt) as a

sql fiddle demo

【讨论】:

【参考方案2】:

我是这样管理的

function dateStringToDb($dateString)
    if($dateString != NULL)
        $dateString = substr($dateString,4,6)." ".substr($dateString,sizeof($dateString)-5,4);
        return new Zend_Db_Expr("to_date('".$dateString."', 'Mon DD YYYY')");
    
    return NULL;

这似乎是最好的方法,无论如何谢谢

【讨论】:

以上是关于从 php 到 postgresql 的日期字符串的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL,试图将日期列从 csv 文件复制到表的列

如何从Postgresql中的工作日编号中获取日期名称?

PHP - 格式化日期

PHP使用DateTime类做时间日期到字符串转换

将日期时间转换为字符串 PHP

昨天 - 在 Redshift 和 PostgreSQL 中 - 日期添加兼容性