powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite3 datetime
7 сообщений из 7, страница 1 из 1
sqlite3 datetime
    #40040115
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlite3 datetime

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 create table if not exists t (       
     nt     text
    ,dtTm   DateTime     DEFAULT CURRENT_TIMESTAMP
--    ,dtTmL   DateTime     DEFAULT datetime('now', 'localtime') -- mistake
 );      

 insert into t ( nt) 
   values ( 'first record')
   ;

-------------------------------------

 insert into  t     ( nt, dtTm)    values
     ('right now 1'                ,  datetime('now', 'localtime'))    -- mistake
     ,('right now 2'                ,  CURRENT_TIMESTAMP) 
    ,('new Year',                  '2021-01-01 00:00:00' ) 
    ,('Unix Epoch',                '1970-01-01 00:00:00' ) 
    ,('Jesus Christ Era',          '0000-01-01 00:00:00' ) 
    ,('E.F.Codd birthday',         '1923-08-19 00:00:00' ) 
    ,('2000 year mistake',         '2000-01-01 00:00:00' ) 
    ,('E.F. Codd birthday',        '1923-08-19 00:00:00' ) 
    ,('V.M.Glushkov birthday',     '1923-08-23 00:00:00' ) 
    ,('Kenneth Thompson  birthday','1943-02-04 00:00:00' )
    ,('Alonzo Church  birthday',   '1903-06-14 00:00:00' )
    ,('Dennis Ritchie  birthday',  '1941-09-09 00:00:00' )
    ,('A.N. Kolmogorv  birthday',  '1903-04-24 00:00:00' )
    ,('O.Yu. Schmidt  birthday' ,  '1891-09-30 00:00:00' )
 ;

-----

 insert into  t     ( nt, dtTm)    values
     ('local time'                ,  datetime('now', 'localtime'))   -- mistake
     ,('Greenwich time'            ,  datetime('now')) 
 ;







Код: sql
1.
2.
3.
4.
--         время хранилось в гринвиче- сконвертить в местное
select rowid,  nt, dtTm, datetime(dtTm, 'localtime') from t  
 order by dtTm
;  


query

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  select rowid, nt, dtTm, 'year'  from t     -- to select 1923 year
    where 
       cast(strftime('%Y', dtTm) AS INTEGER) == 1923
  ;  
  select rowid, nt, dtTm,   'january' from t    -- to select all the january
    where 
       cast(strftime('%m', dtTm) AS INTEGER) == 1
  ; 
  select rowid, nt, dtTm, 'friday'  from t    -- to select all the monday
    where 
       cast(strftime('%w', dtTm) AS INTEGER) == 5
  ; 
-- 0:sunday 1:monday 2:tuesday 3:wednesday 
-- 4:thursday 5:friday 6:saturday
  select rowid, nt, dtTm, '4th day of month'  from t -- to select all the set day of month
    where 
       cast(strftime('%d', dtTm) AS INTEGER) ==  4
  ; 



answer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
rowid       nt                 dtTm                 'year'    
----------  -----------------  -------------------  ----------
7           E.F.Codd birthday  1923-08-19 00:00:00  year      
9           E.F. Codd birthda  1923-08-19 00:00:00  year      
10          V.M.Glushkov birt  1923-08-23 00:00:00  year      
rowid       nt            dtTm                 'january' 
----------  ------------  -------------------  ----------
1           first record  2021-01-30 13:01:21  january   
2           right now 1   2021-01-30 15:01:49  january   
3           right now 2   2021-01-30 13:01:49  january   
4           new Year      2021-01-01 00:00:00  january   
5           Unix Epoch    1970-01-01 00:00:00  january   
6           Jesus Christ  0000-01-01 00:00:00  january   
8           2000 year mi  2000-01-01 00:00:00  january   
rowid       nt          dtTm                 'friday'  
----------  ----------  -------------------  ----------
4           new Year    2021-01-01 00:00:00  friday    
14          A.N. Kolmo  1903-04-24 00:00:00  friday    
rowid       nt                          dtTm                 '4th day of month'
----------  --------------------------  -------------------  ------------------
11          Kenneth Thompson  birthday  1943-02-04 00:00:00  4th day of month  

...
Рейтинг: 0 / 0
sqlite3 datetime
    #40040118
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
время хранилось в гринвиче - извлечь по локальному
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  select rowid, nt, dtTm, 'Greenwich time query'  from t  
    where 
       cast(strftime('%H', dtTm) AS INTEGER) between 12 and  15
  ; 

  select rowid, nt, dtTm, 'local time query'  from t    
    where 
       cast(strftime('%H', datetime(dtTm, 'localtime')) AS INTEGER) between 12 and  15
  ; 




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
rowid       nt            dtTm                 'Greenwich time query'
----------  ------------  -------------------  ----------------------
1           first record  2021-01-30 13:01:21  Greenwich time query  
2           right now 1   2021-01-30 15:01:49  Greenwich time query  
3           right now 2   2021-01-30 13:01:49  Greenwich time query  
rowid       nt            dtTm                 'local time query'
----------  ------------  -------------------  ------------------
1           first record  2021-01-30 13:01:21  local time query  
3           right now 2   2021-01-30 13:01:49  local time query  

...
Рейтинг: 0 / 0
sqlite3 datetime
    #40047698
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на той же таблице вставка записи с DateTime .net через параметры

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
using System;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
class A{
  public static void Main(){
     using (SQLiteFactory dbF = new SQLiteFactory()){      
       using (DbConnection cnn=dbF.CreateConnection()){
         cnn.ConnectionString = "Data Source=.db";
         cnn.Open();
         using (DbCommand cmd = cnn.CreateCommand()){
              DbParameter nt = cmd.CreateParameter();    
              nt.DbType             = DbType.String;
              nt.ParameterName               = "@nt";
              DbParameter dt = cmd.CreateParameter();    
              dt.DbType             = DbType.DateTime;
              dt.ParameterName               = "@dt";
              cmd.CommandText = string.Format 
                             ("insert into  t(nt, dtTm) values ({0}, {1})"
                                , nt.ParameterName, dt.ParameterName);
              cmd.Parameters.Add(nt);
              cmd.Parameters.Add(dt);
              test.sql( cnn, cmd);
         }
         Console.WriteLine("\nWe did the datetime demo!");
      }
    }
  }
}



этот файл был набран в utf-8

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
using System;
using System.IO;
using System.Text;
using System.Data.Common;
class test{
    public static string dtToA(DateTime value){
        return value.ToString("yyyy-MM-dd HH:mm:ss");
    }
   public static  void sql(DbConnection cnn, DbCommand cmd ){
     cmd.Parameters[0].Value = string.Format("время запуска Спутник-1 (локальное)");
     DateTime 
     t  = new DateTime (1957, 10, 4, 19, 28, 34, 
                                     DateTimeKind.Local); // no difference ??
     cmd.Parameters[1].Value = dtToA(t);
     cmd.ExecuteNonQuery();

     cmd.Parameters[0].Value = string.Format("the utc time of Sputnik 1 start");
     t = new DateTime (1957, 10, 4, 19, 28, 34, 
                                               DateTimeKind.Utc);  // // no difference ??
     cmd.Parameters[1].Value = dtToA(t);
     cmd.ExecuteNonQuery();

     cmd.Parameters[0].Value = "utc time now";
     cmd.Parameters[1].Value = dtToA(DateTime.UtcNow);
     cmd.ExecuteNonQuery();
  }
}



в консоли выбрать Lucida Console, задать chcp 65001


вывод

Код: plaintext
1.
2.
3.
4.
first record                       |2021-02-21 13:41:13
вторая запись                      |2021-02-21 13:41:32
время запуска Спутник-1 (локальное)|1957-10-04 19:28:34
the utc time of Sputnik 1 start    |1957-10-04 19:28:34
utc time now                       |2021-02-21 13:45:00
красное, видимо, не проблема sqlite3
...
Рейтинг: 0 / 0
sqlite3 datetime
    #40047707
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
впрочем, без этого метода тоже вставляется

Код: c#
1.
2.
3.
 public static string dtToA(DateTime value){
        return value.ToString("yyyy-MM-dd HH:mm:ss");
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
using System;
using System.IO;
using System.Text;
using System.Data.Common;
class test{
   public static string dtToA(DateTime value){
       return value.ToString("yyyy-MM-dd HH:mm:ss");
   }
   public static  void sql(DbConnection cnn, DbCommand cmd ){
     cmd.Parameters[0].Value = 
             string.Format("the utc time of Sputnik 1 start");
     DateTime
     t = new DateTime (1957, 10, 4, 19, 28, 34);
         // DateTimeKind.Utc    -- no difference ??
         // DateTimeKind.Local
//     cmd.Parameters[1].Value = dtToA(t);
     cmd.Parameters[1].Value = t;
     cmd.ExecuteNonQuery();

     cmd.Parameters[0].Value = "this is correct utc now";  
//     cmd.Parameters[1].Value =  dtToA(DateTime.UtcNow);  
     cmd.Parameters[1].Value =  DateTime.UtcNow;  
     cmd.ExecuteNonQuery();
  }
}
...
Рейтинг: 0 / 0
sqlite3 datetime
    #40047767
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тихо, молча, сам с собою ...

tchingiz, зачем этот блог потока мысли? Задай вопрос
...
Рейтинг: 0 / 0
sqlite3 datetime
    #40047818
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это же ответы ))
как временем в sqlite3 пользоваться, если lдатуВремя строкой хранить.
С секундами эпохи юникса шото не получилось с налета.
Мне кажется это самый экономный способ с т.з. памяти..
я помню цитату из КерниганаРичи "за экономию памяти у нас не награждают"
...
Рейтинг: 0 / 0
sqlite3 datetime
    #40113823
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юлианские дни
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
drop table if exists t;
create table t (nt text, dtTm DateTime DEFAULT CURRENT_TIMESTAMP);
insert into t ( nt, dtTm) values
    ('right now 1'              , julianday(CURRENT_TIMESTAMP))
   ,('new Year'                 , julianday('2021-01-01 00:00:00'))
   ,('Unix Epoch'               , julianday('1970-01-01 00:01:00' ))
   ,('Jesus Christ Era'         , julianday('0000-01-01 00:02:00'))
   ,('2000 year mistake'        , julianday('2000-01-01 00:03:00'))
   ,('E.F. Codd birthday'       , julianday('1923-08-19 00:04:00') )
   ,('V.M. Glushkov birthday'   , julianday('1923-08-23 00:05:00') )
   ,('Kenneth Thompson birthday',julianday('1943-02-04 00:06:00') )
   ,('Alonzo Church birthday'   ,julianday('1903-06-14 01:00:00')) 
   ,('Dennis Ritchie birthday'  , julianday('1941-09-09 02:00:00')) 
   ,('A.N. Kolmogorv birthday'  , julianday('1903-04-24 03:00:00')) 
   ,('O.Yu. Schmidt birthday'   , julianday('1891-09-30 04:00:00')) ;

select  nt, datetime(dtTm), dtTm, julianday(datetime(dtTm)) from t;
select '-------------------------------------------------------';

select  nt, dtTm, 'year 1923' from t where cast(strftime('%Y', dtTm) AS INTEGER) == 1923;


ответ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
nt                         datetime(dtTm)       dtTm              julianday(datetime(dtTm))
-------------------------  -------------------  ----------------  -------------------------
right now 1                2021-11-22 13:46:21  2459541.07385417  2459541.07385417         
new Year                   2021-01-01 00:00:00  2459215.5         2459215.5                
Unix Epoch                 1970-01-01 00:01:00  2440587.50069444  2440587.50069444         
Jesus Christ Era           0000-01-01 00:02:00  1721059.50138889  1721059.50138889         
2000 year mistake          2000-01-01 00:03:00  2451544.50208333  2451544.50208333         
E.F. Codd birthday         1923-08-19 00:04:00  2423650.50277778  2423650.50277778         
V.M. Glushkov birthday     1923-08-23 00:05:00  2423654.50347222  2423654.50347222         
Kenneth Thompson birthday  1943-02-04 00:06:00  2430759.50416667  2430759.50416667         
Alonzo Church birthday     1903-06-14 01:00:00  2416279.54166667  2416279.54166667         
Dennis Ritchie birthday    1941-09-09 02:00:00  2430246.58333333  2430246.58333333         
A.N. Kolmogorv birthday    1903-04-24 03:00:00  2416228.625       2416228.625              
O.Yu. Schmidt birthday     1891-09-30 04:00:00  2412005.66666667  2412005.66666667         
'-------------------------------------------------------'
---------------------------------------------------------
-------------------------------------------------------  
nt                      dtTm              'year 1923'
----------------------  ----------------  -----------
E.F. Codd birthday      2423650.50277778  year 1923  
V.M. Glushkov birthday  2423654.50347222  year 1923  
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite3 datetime
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]