我有一个存储 unix 时间戳的表。要将其作为日期查询,我正在尝试将此时间戳转换为视图中的日期时间类型。不幸的是,我似乎只能取出 DATE 部分。
此链接描述了如何进行转换,但需要更改nls_date_format以包含时间部分。默认当前仅显示日期部分。我需要日期和时间。
不幸的是,该解决方案仅适用于会话级别。作为开发人员,我宁愿不必跑到我们的托管服务提供商那里要求他们更改数据库级别的值 - 特别是因为它可能会影响其他应用程序。
有没有一种方法可以在不修改系统的情况下将 sql 中的时间戳转换为日期时间?
在我的 MySQL 服务器中,我有包含我创建内容日期的行。
例子:2013-03-17 02:53:47
现在,我正在使用:
$date = $fetch[thedaterownamegoeshere];
<?php echo $date; ?>
Run Code Online (Sandbox Code Playgroud)
但是2013-03-17 02:53:47,我不想获取日期 ( )的全部内容,而是只想获取月份——在本例中,我希望将数字“03”作为结果。我怎样才能做到这一点?
建议使用哪个 SQL 命令将日期转换为yyyymmdd格式?
convert(varchar(8), getdate(), 112); 或者convert(varchar, getdate(), 112)我注意到如果我使用第二个,它会在日期后附加两个空格。(例如 [ 20130705] - 注意值后面的两个空格20130705)
是否建议使用第一个 SQL 语句?
我正在制作一项需要保存按年月组合分组和计算的数据的服务。我知道如何计算数据并将其放在新表上。但是我很困惑应该使用哪种数据类型来存储月 - 年值。这是我所考虑的。
我应该选哪个?或者有其他解决方案。有人可以根据性能建议哪种方式将是一个好的解决方案,因为大多数查询将在 where 解决方案中使用数据范围,而我的新表将有大约 2-5 百万条记录。
我正在从一个文件开发 ETL,其中日期以“DDMMYYYY”格式表示,例如“31012016”。
我想获取这个字符串并将它直接传递给将插入数据的 SQL 文本。我不想将它解析为 C# DateTime 然后将其格式化为“YYYY-MM-DD”,以便 SQL Server 再次解析它。
正如我目前所做的那样,日期字符串由 .Net 解析一次,然后由 .Net 格式化并打印在 SQL 代码中,然后由 SQL Server 再次解析。我想从平面文件中获取字符串并将其直接放入 SQL 代码中,无需任何转换。
SQL Server 识别“YYYYMMDD”,但“DDMMYYYY”失败并显示消息:
从字符串转换日期和/或时间时转换失败。
例子:
DECLARE @datevar date = PARSE('31012016' as date using 'pt-BR');
SELECT @datevar;
Run Code Online (Sandbox Code Playgroud)
有没有办法让它工作?
我试过了,PARSE('31012016' as date using 'pt-BR')但引发了异常。TRY_PARSE返回空值。还尝试了CAST 和 CONVERT (Transact-SQL)但似乎不存在这种风格。
在我的数据库中,日期保留为自 1970 年 1 月 1 日起/之前经过的天数,我认为这是一种 Unix 日期格式,例如。今天是 2018 年 5 月 23 日,值为 17674。
我正在尝试select针对日期表中的列运行语句以仅显示年份。
如果我运行这个:
datepart(year, c.cko_date)
Run Code Online (Sandbox Code Playgroud)
我得到的日期是 1940 年代(应该是最近几年)。
当我跑
select datepart(year, getdate())
Run Code Online (Sandbox Code Playgroud)
它正确地告诉我日期是 2018 年。
关于我做错了什么的任何建议?
这似乎是一件微不足道的事情很容易,但我找不到一个好的方法来做到这一点。
这就是我想出的:
select convert(numeric,
(select convert(varchar,datepart(yy,getdate())) +
right('0' + convert(varchar,datepart(mm,getdate())), 2) +
right('0' + convert(varchar,datepart(dd,getdate())), 2)
))
Run Code Online (Sandbox Code Playgroud)
编辑:我知道它不需要这样的子查询,但忽略 =p
我的表结构:
+-----------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(100) | NO | | NULL | |
| uniq_name | varchar(100) | NO | | NULL | |
| info_name | varchar(100) | NO | | NULL | |
| delay_time | int(11) | NO | | NULL | |
| track_time | timestamp | NO | …Run Code Online (Sandbox Code Playgroud) 这个查询:
select to_char(sysdate, 'Ddspth MONTH, Yyyysp') from dual
Run Code Online (Sandbox Code Playgroud)
将返回:
Eighteenth MARCH , Two Thousand Fourteen
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何其他格式关键字允许包含诸如 "of" 、 "the" 之类的字符列表,以便获得如下输出:
"Today is the" Eighteenth "of" MARCH, Two Thousand Fourteen
Run Code Online (Sandbox Code Playgroud)
还是需要拆分日期转换并使用 concat 函数?谢谢
例如 :
select 'Today is the ' || to_char(sysdate, 'Ddspth') || ' of' || to_char(sysdate,' MONTH, Yyyysp') from dual
Run Code Online (Sandbox Code Playgroud) tsrange 如何以二进制形式存储?
例如创建表
CREATE TABLE public.test (t tsrange);
INSERT INTO test VALUES ('[2010-01-01 14:30, 2010-01-01 15:30)');
INSERT INTO test VALUES ('[2011-01-01 14:31, 2015-11-01 15:30)');
INSERT INTO test VALUES ('[2017-01-01 14:31, 2018-11-01 15:30)');
COPY test TO '/tmp/pgcopy' WITH (FORMAT binary);
COPY test TO '/tmp/pgcopy.csv' WITH (FORMAT csv);
Run Code Online (Sandbox Code Playgroud)
它输出:
cat /tmp/pgcopy.csv
"[""2010-01-01 14:30:00"",""2010-01-01 15:30:00"")"
"[""2011-01-01 14:31:00"",""2015-11-01 15:30:00"")"
"[""2017-01-01 14:31:00"",""2018-11-01 15:30:00"")"
hexdump -C /tmp/pgcopy
00000000 50 47 43 4f 50 59 0a ff 0d 0a 00 00 00 00 00 00 |PGCOPY..........|
00000010 …Run Code Online (Sandbox Code Playgroud) date-format ×10
sql-server ×3
date ×2
mysql ×2
oracle ×2
copy ×1
datatypes ×1
datetime ×1
dump ×1
fields ×1
format ×1
mysql-5.5 ×1
oracle-11g ×1
php ×1
phpmyadmin ×1
postgresql ×1
sybase ×1
timestamp ×1