时间戳时间转

-- MySQL
SELECT FROM_UNIXTIME(875996580); -- 时间戳int转时间
SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00') -- 时间转,时间戳int


-- MSSQL
SELECT DATEDIFF(s, '19700101',GETDATE()) 
SELECT DATEADD(hh,8, DATEADD(s, 1483228626 , '19700101') )

-- ORACLE,注意Oracle是毫秒

SELECT TO_CHAR(1483243932000 / (1000 * 60 * 60 * 24) + 
TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE 
FROM DUAL;-- 毫秒转换为日期

SELECT TO_NUMBER(TO_DATE('2017-01-01 12:12:12', 'YYYY-MM-DD HH24:MI:SS') - 
TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 
FROM DUAL; -- 日期转换毫秒

PostgreSQL:

select extract(epoch from to_timestamp('2018-01-01 00:00:00','yyyy-MM-DD hh24:mi:ss')); -- 时间转秒
select to_timestamp(1514736000) ; -- 秒转时间

其他:

SELECT 
CONCAT('CREATE TABLE t_app_data_' ,DATE_FORMAT(DATE_ADD('2021-01-01',INTERVAL help_topic_id DAY),'%Y%m%d')
, ' PARTITION OF t_app_data FOR VALUES FROM (' , UNIX_TIMESTAMP(DATE_ADD('2021-01-01',INTERVAL help_topic_id DAY))
,') TO (', UNIX_TIMESTAMP(DATE_ADD('2021-01-01',INTERVAL help_topic_id+1 DAY)),'-1);') d
-- ,DATE_ADD('2021-01-01',INTERVAL help_topic_id DAY)
FROM help_topic

SELECT CONCAT( 'ALTER TABLE t_dwd_tb1 ADD PARTITION "'
,DATE_FORMAT(DATE_ADD('2021-01-02 00:00:00',INTERVAL help_topic_id DAY),'%Y%m%d')  
,'" START (',SUBSTRING(UNIX_TIMESTAMP(DATE_ADD('2021-01-02 00:00:00',INTERVAL help_topic_id DAY)),1,10) 
,') END (' ,SUBSTRING(UNIX_TIMESTAMP(DATE_ADD('2021-01-03 00:00:00',INTERVAL help_topic_id DAY)),1,10) 
,') exclusive WITH (appendonly=TRUE,compresslevel=1);' ) ddl 
FROM help_topic 
WHERE help_topic_id<=210 
LIMIT 0, 1000; 

<think>好的,用户的问题是“如何在编程中将时间戳换为日期时间格式”。我需要根据用户提供的三个引用内容来回答,这些引用分别涉及Excel、JavaScript和MySQL中的换方法。首先,我需要确认用户使用的编程语言,但用户没有明确说明,所以应该覆盖几种常见语言的情况。引用[1]详细讲解了Excel中使用公式换秒级时间戳的方法,特别是将时间戳换为yyyy-mm-dd hh:mm:ss格式。这里需要解释Excel中的日期系统是从1900年1月1日开始,所以换时需要加上对应的天数。引用[2]是关于JavaScript的,提到时间戳通常是毫秒级,需要除以1000得到秒,然后使用Date对象来处理。需要提醒用户注意时间戳的单位,以及如何格式化输出。 引用[3]涉及MySQL,使用FROM_UNIXTIME函数和DATE_FORMAT来时间戳,并调整格式。需要说明函数的用法和格式化符号的区别,比如%Y和%y的不同。用户可能需要具体的代码示例,所以我要为每种语言提供示例代码,并指出关键步骤,比如处理毫秒级时间戳、时区问题等。此外,常见问题部分应该涵盖时区、单位混淆和格式自定义,这些都是用户容易遇到的问题。还要注意用户之前的问题可能涉及时间戳换,但这次是编程中的换,所以需要区分不同环境的处理方法。需要确保回答结构清晰,分语言说明,并给出步骤和代码,最后总结注意事项。</think>### 时间戳换为日期时间格式的编程实现 时间戳换的核心是区分时间戳单位(秒/毫秒)和时区处理。以下是不同编程语言中的实现方法: --- #### 一、JavaScript实现 JavaScript默认使用毫秒级时间戳换方法如下: ```javascript // 1. 处理秒级时间戳需乘以1000 const timestamp = 1717027200; // 示例秒级时间戳 const date = new Date(timestamp * 1000); // 2. 换为yyyy-mm-dd hh:mm:ss格式 const formatted = date.toISOString().replace('T', ' ').slice(0, 19); console.log(formatted); // 输出:2024-05-30 00:00:00 ``` **关键点**: - 使用`toISOString()`会自动为UTC时区[^2] - 若需本地时区,需手动拼接: ```javascript function pad(n) { return n < 10 ? '0' + n : n; } const localTime = `${date.getFullYear()}-${pad(date.getMonth()+1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`; ``` --- #### 二、Python实现 Python的`datetime`模块支持直接处理时间戳: ```python import datetime timestamp = 1717027200 # 秒级时间戳 utc_time = datetime.datetime.utcfromtimestamp(timestamp) # UTC时间 local_time = datetime.datetime.fromtimestamp(timestamp) # 本地时间 # 格式化为字符串 formatted = local_time.strftime("%Y-%m-%d %H:%M:%S") print(formatted) # 输出:2024-05-30 08:00:00(假设时区为UTC+8) ``` **注意**:`strftime`的格式化符号与语言相关,如`%Y`表示4位年份[^3]。 --- #### 三、MySQL实现 在SQL查询中直接时间戳: ```sql SELECT FROM_UNIXTIME(1717027200) AS default_format, -- 输出:2024-05-30 08:00:00 DATE_FORMAT(FROM_UNIXTIME(1717027200), '%Y-%m-%d %H:%i:%S') AS custom_format; ``` **函数说明**: - `FROM_UNIXTIME()`自动换秒级时间戳为日期 - `DATE_FORMAT()`可自定义格式,如`%H`表示24小时制[^3] --- #### 四、Excel实现 Excel日期以1900-1-1为起点,换公式为: ```excel =TEXT((A1/86400)+DATE(1970,1,1), "yyyy-mm-dd hh:mm:ss") ``` **步骤解析**: 1. `A1/86400`:将秒换为天数 2. `+DATE(1970,1,1)`:补偿UNIX与Excel日期的起点差异[^1] --- ### 常见问题与解决方案 1. **时区偏差**: - JavaScript默认输出UTC时间,需手动调整时区偏移量 - Python的`fromtimestamp()`会根据系统时区换 2. **单位混淆**: - 若时间戳为13位(毫秒级),需先除以1000(Python/JS) - 示例:`new Date(1717027200000)` → 错误时间 3. **格式自定义**: - 各语言的占位符不同: - Python:`%Y`(年)、`%m`(月) - MySQL:`%Y`(年)、`%i`(分钟) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值